SQL仅返回所选周的日期

SQL仅返回所选周的日期,sql,date,Sql,Date,我正在对时间表报告编写SQL查询。我需要报告仅返回所选日期所在周的详细信息 例如,如果我选择2012年1月2日(dd/MM/yyyy),那么它应该只返回2012年1月2日到2012年1月8日之间的结果 谢谢选择 * 从…起 你的桌子 哪里 dateField>=@yourDate 和日期字段

我正在对时间表报告编写SQL查询。我需要报告仅返回所选日期所在周的详细信息

例如,如果我选择2012年1月2日(dd/MM/yyyy),那么它应该只返回2012年1月2日到2012年1月8日之间的结果

谢谢

选择
*
从…起
你的桌子
哪里
dateField>=@yourDate
和日期字段<@yourDate+7
SQL的某些变体可能有向datevalue添加7天的特定方法。例如…
-
DateAdd(第7天@date)

-
DATE\u添加(@DATE,间隔7天)

-等等等等

此选项对索引友好,并且对包含时间部分和日期部分的数据库字段具有弹性

SELECT * FROM table_name
WHERE date BETWEEN '1/02/2012' AND '1/08/2012';
您可以用日期和日期+6替换示例日期


例如,请看这里:

您的SQL引擎中的函数相当于您的SQL引擎中的函数

但您也可以使用DATE\u ADD

WHERE table.date BETWEEN target_date AND DATE_ADD(target_date,INTERVAL 7 DAY)

这取决于您使用的数据库系统。MySQL有一个名为WEEK()的函数,SQL Server可以使用DATEPART()函数执行以下操作:

MySQL:

SELECT 
* 
FROM table
WHERE WEEK(date_col) = WEEK('02/01/2012');
SQL SERVER:

   SELECT 
    * 
    FROM table
    WHERE DATEPART(WEEK, datecol) = DATEPART(WEEK,'02/01/2012');

在之间使用
时,这应该是+6,而不是+7。你当然是对的。我习惯于使用时间戳:(-适用于我tooThis会混淆索引,并在扫描中而不是搜索中产生结果。也就是说,在你的帖子(DEM)中的任意日期上加上七天,可能不一定会产生一周的天数(例如上周的星期三到本周的星期三).你可能很快,但正确???啊,我明白了!这取决于OP是否想要一个日历周,以及OP认为周开始日是什么。我只是假设了7天的窗口,现在我只是不确定OP想要哪一天:)好的观点!当在这两者之间使用时,应该是
6天
而不是
7天
您指的是日历周吗?(如果指定星期三,计算包括前一个星期一到下一个星期天,例如?)或仅从指定日期开始的7天?用户选择的任何一天加7
   SELECT 
    * 
    FROM table
    WHERE DATEPART(WEEK, datecol) = DATEPART(WEEK,'02/01/2012');