所以在我的数据库中我有2个日期我想要区别。它们的格式为2013-07-31 00:00:00。我希望在几周内有所不同,而不是时间。所以说日期1 - 日期2 = 3天12小时。我希望将其表示为一周,如0.5周。我怎样才能在我的SQL查询中执行此操作?
注意:我希望返回的值是小数,例如1.5不是字符串
答案 0 :(得分:0)
这将为您提供一个完整的数字:
SELECT TIMESTAMPDIFF(WEEK, date1, date2) AS weeks;
要包含几天的分数,请使用:
SELECT TIMESTAMPDIFF(DAY, date1, date2) / 7 AS weeks_days;
或分数秒,使用:
SELECT TIMESTAMPDIFF(SECOND, date1, date2) / 604800 AS weeks_secs;
604800为7 * 24 * 60 * 60;
以下是一个例子:
SET @date1 = NOW() - INTERVAL 777 HOUR, @date2 = NOW();
SELECT
TIMESTAMPDIFF(WEEK, @date1, @date2) AS weeks,
TIMESTAMPDIFF(DAY, @date1, @date2) / 7 AS weeks_days,
TIMESTAMPDIFF(SECOND, @date1, @date2) / 604800 AS weeks_secs;
返回:
+-------+------------+------------+
| weeks | weeks_days | weeks_secs |
+-------+------------+------------+
| 4 | 4.5714 | 4.6250 |
+-------+------------+------------+