0

したがって、私のデータベースには、違いを取得したい2つの日付があります。2013-07-31 00:00:00 の形式です。時間ではなく、数週間で違いが欲しいです。つまり、日付 1 - 日付 2 = 3 日と 12 時間です。0.5 週間のように、これを 1 週間として表現したいと思います。SQLクエリでこれを行うにはどうすればよいですか?

注: 返される値を 10 進数にする必要があります。たとえば、文字列ではなく 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 に答える