我在时间表报告上撰写SQL查询。我需要报告只返回选定日期的周的详细信息。例如,如果我选择02/01/2012(dd/MM/yyyy),那么它应该只在2012年2月1日至2012年1月8日之间返回结果。SQL仅返回指定星期的日期
感谢
我在时间表报告上撰写SQL查询。我需要报告只返回选定日期的周的详细信息。例如,如果我选择02/01/2012(dd/MM/yyyy),那么它应该只在2012年2月1日至2012年1月8日之间返回结果。SQL仅返回指定星期的日期
感谢
SELECT
*
FROM
yourTable
WHERE
dateField >= @yourDate
AND dateField < @yourDate + 7
SQL的一些变化可能增加7天一个DATEVALUE的具体方式。如...
- DateAdd(Day, 7, @date)
- DATE_ADD(@date, INTERVAL 7 DAYS)
- 等,等
此选项既指标友好的,是有弹性的,以有时间部分以及日期部分的数据库字段。
SELECT * FROM table_name
WHERE date BETWEEN '1/02/2012' AND '1/08/2012';
你可以用你的日期更换例如日期和yourdate + 6
看这里例如:http://www.roseindia.net/sql/sql-between-datetime.shtml
当使用BETWEEN时,这应该是+6,而不是+7。 – MatBailie 2012-01-12 16:05:39
你当然是对的。我习惯使用时间戳:( - 也适用于我 – tehdoommarine 2012-01-12 17:42:05
你最简单的就是WEEK_OF_YEAR功能在你的SQL引擎相当于
但是您也可以使用DATE_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');
这个混淆INDEX并导致扫描而不是查找 – MatBailie 2012-01-12 16:06:07
这样,但是添加七天到任意日期(如在您的帖子(Dems)中),可能没有必要导致有一周的时间(we.g 。上周的星期三到本周的星期三)。你可能会很快,但是正确吗? – Mithrandir 2012-01-12 16:09:25
啊,我找到你了!它取决于OP是否需要一个日历周,以及OP认为该周的内容开始一天,我只是假设一个7天的窗口,现在我只是不确定OP想要哪个:)好点! – MatBailie 2012-01-12 16:13:38
你的意思是日历周? (如果指定星期三,则计算包括前一个星期一到下一个星期日,例如?)或仅指定日期开始的7天? – MatBailie 2012-01-12 16:14:55
无论用户选择什么日子加上7 – Melanie 2012-01-12 16:43:00