所以在我的数据库中,我有 2 个日期我想知道它们之间的区别。它们的格式为 2013-07-31 00:00:00。我想要几周内的不同,而不是时间。所以说日期 1 - 日期 2 = 3 天 12 小时。我希望将其表示为一周,例如 0.5 周。如何在我的 sql 查询中执行此操作?
注意:我希望返回的值是小数,例如 1.5 而不是字符串
所以在我的数据库中,我有 2 个日期我想知道它们之间的区别。它们的格式为 2013-07-31 00:00:00。我想要几周内的不同,而不是时间。所以说日期 1 - 日期 2 = 3 天 12 小时。我希望将其表示为一周,例如 0.5 周。如何在我的 sql 查询中执行此操作?
注意:我希望返回的值是小数,例如 1.5 而不是字符串
这将为您提供一个整数:
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 |
+-------+------------+------------+