MySQL:如何从特定日期开始计算几周?
-
08-10-2019 - |
题
我需要从我的MySQL Select语句中的日期开始计算几周。其中一个表中有一个日期列,我需要计算日期的几周。
SELECT EventDate, (calculation) AS WeeksOut FROM Events;
例子:
- 距离6天,几周= 0
- 距离7天,几周= 1
- 13天,几周= 1
- 14天,几周= 2
其他提示
这是一种简单的方法:
SELECT EventDate, (week(EventDate) - week(curdate())) AS WeeksOut FROM Events;
例子:
mysql> select week('2010-11-18') - week ('2010-10-18');
+------------------------------------------+
| week('2010-11-18') - week ('2010-10-18') |
+------------------------------------------+
| 4 |
+------------------------------------------+
1 row in set (0.00 sec)
另一个选择是计算几天间隔,然后除以7:
SELECT EventDate, datediff(EventDate,curdate())/7 AS WeeksOut FROM Events;
例子:
mysql> select datediff('2010-11-18' , '2010-10-18') / 7;
+-------------------------------------------+
| datediff('2010-11-18' , '2010-10-18') / 7 |
+-------------------------------------------+
| 4.4286 |
+-------------------------------------------+
1 row in set (0.00 sec)
为了克服整个“新年”问题,您仍然想使用 WEEK()
, ,我发现以下方法非常有效。
SELECT
YEAR(end_date)*52+WEEK(end_date)
- YEAR(start_date)*52 - WEEK(start_date) as weeks_out
FROM
events;
这种方法的区别(相反 DATEDIFF
方法)是它与本周保持一致。所以今天(星期一)和上周五将返回 1
使用此方法,但会返回 0
与 DATEDIFF
方法
不隶属于 StackOverflow