如何在mysql中将时差转换为十进制周值?

时间:2013-05-01 16:08:27

标签: mysql

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

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

1 个答案:

答案 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 |
+-------+------------+------------+