问题描述
|
假设您有两个日期时间值
date_a
和date_b
如果在date_b
的日历周之内或之内出现date_a
,哪个表达式的计算结果为true?
解决方法
只需使用MySQL的
week()
函数。
例:
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 |
+------------+------------+
这将为您提供与a相同或更早的日历周的所有记录。请注意,week(a)<=week(b)
不起作用,因为每年每年都重新开始。
注意:计数日历周的约定不止一种(星期从星期日或星期一开始,一年中第一周的开始时间不同)。您可以向week()
传递可选的第二个参数\“ mode \”来告诉它使用哪种约定。参见文档。当然,对于此问题,仅一周中的开始日期很重要,而一年中的第一周无关紧要。
,一种更强力的方法:
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 )