MySQL:特定の日付から数週間を計算する方法は?
-
08-10-2019 - |
質問
MySQL Selectステートメントの日付からの週を計算する必要があります。テーブルの1つに日付列があり、日付が何週間離れているかを計算する必要があります。
SELECT EventDate, (calculation) AS WeeksOut FROM Events;
例:
- 6日先、数週間外= 0
- 7日先、数週間外= 1
- 13日先、数週間外= 1
- 14日先、数週間外= 2
解決
使用 Datediff機能:
ROUND(DATEDIFF(end_date, start_date)/7, 0) AS weeksout
数週間の問題は、1月1日までにクロスする日付の正しい結果を返さないことです。
0
で使用する小数点以下の場所の数 ROUND
働き。
他のヒント
これが簡単な方法です:
SELECT EventDate, (week(EventDate) - week(curdate())) AS WeeksOut FROM Events;
例:
mysql> select week('2010-11-18') - week ('2010-10-18');
+------------------------------------------+
| week('2010-11-18') - week ('2010-10-18') |
+------------------------------------------+
| 4 |
+------------------------------------------+
1 row in set (0.00 sec)
別のオプションは、日数の間隔を計算し、7で分割することです。
SELECT EventDate, datediff(EventDate,curdate())/7 AS WeeksOut FROM Events;
例:
mysql> select datediff('2010-11-18' , '2010-10-18') / 7;
+-------------------------------------------+
| datediff('2010-11-18' , '2010-10-18') / 7 |
+-------------------------------------------+
| 4.4286 |
+-------------------------------------------+
1 row in set (0.00 sec)
「新年」の問題全体を乗り越えるために、あなたはまだ使用したい WEEK()
, 、次の方法が非常に効果的であることがわかりました。
SELECT
YEAR(end_date)*52+WEEK(end_date)
- YEAR(start_date)*52 - WEEK(start_date) as weeks_out
FROM
events;
この方法との違い( DATEDIFF
方法)は、それが週に整合していることです。だから今日(月曜日です)そして先週の金曜日は戻ってきます 1
この方法を使用しますが、戻ります 0
とともに DATEDIFF
方法
所属していません StackOverflow