假设您有两个日期时间值, date_a
和 date_b
如果date_a
出现在内或 日历周 date_b
,那么哪个表达式的结果为真?
答案 0 :(得分:3)
示例:
mysql> create table daten (a date, b date);
mysql> insert into daten values ('2011-04-14', '2011-04-12');
mysql> insert into daten values ('2011-04-14', '2011-04-22');
mysql> select * from daten where (week(a)=week(b) and year(a)=year(b)) or a<b;
+------------+------------+
| a | b |
+------------+------------+
| 2011-04-14 | 2011-04-12 |
+------------+------------+
这将为您提供与b相同或更早的日历周的所有记录。请注意,week(a)<=week(b)
不起作用,因为每周会再次开始。
注意:计算日历周有多个约定(星期日或星期一的星期开始,一年中第一周的不同开始)。您可以将可选的第二个参数“mode”传递给week()
,告诉它使用哪个约定;看文档。当然对于这个问题,只有一周的开始日很重要,而不是今年的第一周。
答案 1 :(得分:1)
更强力的方法:
Select ...
From DateValues
Where date_a >= Date_Add( date_b, Interval -DayOfWeek( date_b ) + 1 Day )
And date_a <= Date_Add( date_b, Interval -DayOfWeek( date_b ) + 7 Day )