0

所以在我的数据库中,我有 2 个日期我想知道它们之间的区别。它们的格式为 2013-07-31 00:00:00。我想要几周内的不同,而不是时间。所以说日期 1 - 日期 2 = 3 天 12 小时。我希望将其表示为一周,例如 0.5 周。如何在我的 sql 查询中执行此操作?

注意:我希望返回的值是小数,例如 1.5 而不是字符串

4

1 回答 1

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 |
+-------+------------+------------+
于 2013-05-01T16:35:02.877 回答