質問

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 方法

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top