したがって、私のデータベースには、違いを取得したい2つの日付があります。2013-07-31 00:00:00 の形式です。時間ではなく、数週間で違いが欲しいです。つまり、日付 1 - 日付 2 = 3 日と 12 時間です。0.5 週間のように、これを 1 週間として表現したいと思います。SQLクエリでこれを行うにはどうすればよいですか?
注: 返される値を 10 進数にする必要があります。たとえば、文字列ではなく 1.5 です。
したがって、私のデータベースには、違いを取得したい2つの日付があります。2013-07-31 00:00:00 の形式です。時間ではなく、数週間で違いが欲しいです。つまり、日付 1 - 日付 2 = 3 日と 12 時間です。0.5 週間のように、これを 1 週間として表現したいと思います。SQLクエリでこれを行うにはどうすればよいですか?
注: 返される値を 10 進数にする必要があります。たとえば、文字列ではなく 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 |
+-------+------------+------------+