MySQL には日付関数が多く存在しますが、今回はプロテニス大会の開催日程データの中から、7 日以内に終了したデータを取得したかったので DATEDIFF() を使いました。
DATEDIFF(expr1, expr2)
DATEDIFF() は、ある日付から別の日付までの日数の値として表現された expr1 − expr2 を返します。expr1 および expr2 は、日付または日付時間式です。値の日付部分のみが計算に使用されます。
DATEDIFFの実行
実際に日付の差を求めてみます。
1 2 3 4 5 6 7 8 | SELECT game_name, DATEDIFF(CURRENT_DATE(), end_date) as days FROM [テーブル名] WHERE DATEDIFF(CURRENT_DATE(), end_date) > 0 AND DATEDIFF(CURRENT_DATE(), end_date) < 7; |
未来の大会を除外するために 0 より大きくて、7 よりも小さい日付差を取得するようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 | +--------------------------------------------------------+------+ | game_name | days | +--------------------------------------------------------+------+ | BNLイタリア国際男子 | 1 | | ムチュア・マドリード・オープン男子 | 8 | | ロレックス・モンテカルロ・マスターズ | 29 | | マイアミ・オープン男子 | 50 | | BNPパリバ・オープン男子 | 64 | | 全豪オープン | 113 | | ロレックス・パリマスターズ | 197 | | 上海ロレックスマスターズ | 218 | | 楽天ジャパンオープン | 225 | +--------------------------------------------------------+------+ |