Sql server 基于列日期的日期范围

Sql server 基于列日期的日期范围,sql-server,date,dateadd,Sql Server,Date,Dateadd,我正在使用最新的SQL Server。我有一个带有CreatedDate列的表。我需要编写一个查询,使用CreatedDate中的日期加上或减去7的日期。我不知道该怎么做。我的想法是: DECLARE @Date datetime DECLARE @SevenBefore datetime DECLARE @SevenAfter datetime SET @Date = CreatedDate SET @SevenBefore = DATEADD(day,-7,@Date) SET @Seve

我正在使用最新的SQL Server。我有一个带有CreatedDate列的表。我需要编写一个查询,使用CreatedDate中的日期加上或减去7的日期。我不知道该怎么做。我的想法是:

DECLARE @Date datetime 
DECLARE @SevenBefore datetime
DECLARE @SevenAfter datetime
SET @Date = CreatedDate
SET @SevenBefore = DATEADD(day,-7,@Date)
SET @SevenAfter = DATEADD(day,7,@Date)
SELECT *
FROM <table>
WHERE <table> BETWEEN @SevenBefore AND @SevenAfter
DECLARE@Date-datetime
在datetime之前声明@SevenBefore
声明@SevenAfter datetime
设置@Date=CreatedDate
设置@SevenBefore=DATEADD(第-7天,@Date)
设置@SevenAfter=DATEADD(第7天@Date)
挑选*
从…起
在@SevenBefore和@SevenAfter之间
问题是我不能使用“CreatedDate”作为@DATE集,因为SQL给出了一个错误“无效列名'CreatedDate'”

任何帮助都将不胜感激。我无法列出日期,因为该列中的每个日期都可能不同


谢谢

在这种情况下,您需要停止像程序员那样思考,开始像数据库程序员那样思考

仅允许使用查询的中心部分:

SELECT *
FROM <table>
WHERE <table> BETWEEN @SevenBefore AND @SevenAfter

看看这一点,很明显,表之间还需要一些其他关联。您是否只希望基于创建日期的每个客户的所有数据行,或者可能只希望创建数据记录中显示的对其进行了某些工作的行,或者??。但是,如果没有更全面的规范,我们就无能为力。

在这种情况下,您需要停止像程序员那样思考,开始像数据库程序员那样思考

仅允许使用查询的中心部分:

SELECT *
FROM <table>
WHERE <table> BETWEEN @SevenBefore AND @SevenAfter

看看这一点,很明显,表之间还需要一些其他关联。您是否只希望基于创建日期的每个客户的所有数据行,或者可能只希望创建数据记录中显示的对其进行了某些工作的行,或者??。但是,如果没有更全面的规范,我们将无能为力。

创建日期在哪里?如果您在表格中使用列值,为什么还要麻烦做+/-7?你能解释一下吗?它在另一张桌子上吗?这是一个很好的开始。你的质疑根本没有意义。是否在@SevenBefore和@SevenAfter之间从WHERE.CreatedDate中选择*?您试图将
中的哪个字段限制在此日期范围内?您从何处获得创建日期?如果您在表格中使用列值,为什么还要麻烦做+/-7?你能解释一下吗?它在另一张桌子上吗?这是一个很好的开始。你的质疑根本没有意义。是否在@SevenBefore和@SevenAfter之间从WHERE.CreatedDate中选择*?您试图将
中的哪个字段限制在此日期范围内?