Mysql日期少于一周的操作

时间:2011-04-14 19:59:40

标签: mysql sql date

假设您有两个日期时间值, date_a date_b

如果date_a出现内或 日历周 date_b,那么哪个表达式的结果为真?

2 个答案:

答案 0 :(得分:3)

只需使用MySQL's week() function

示例:

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 )