技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

日付の範囲指定、月指定など - GoのSquirrelでの方法も紹介【MySQL】

日付の範囲を指定したり、7月だけといったように指定する方法を紹介します。

日付の範囲

// min ~ max
WHERE <カラム名> BETWEEN min AND max
// min ~ maxではない範囲
WHERE <カラム名> NOT BETWEEN min AND max


年、月、日の指定

// 年月日の指定
WHERE DATE_FORMAT(<カラム名>, %Y%m%d) = '20190714'
// 年月の指定
WHERE DATE_FORMAT(<カラム名>, %Y%m) = '201907'
// 年の指定
WHERE DATE_FORMAT(<カラム名>, %Y) = '2019'
// 月日の指定
WHERE DATE_FORMAT(<カラム名>, %m%d) = '0714'
// 月の指定
WHERE DATE_FORMAT(<カラム名>, %m) = '07'
// 日の指定
WHERE DATE_FORMAT(<カラム名>, %d) = '14'



なお、Go言語でsquirrelというSQLビルダーがありますが、年の変数と月の変数などを連結して対象を指定する場合には、事前に連結した変数を定義し、それを使用する必要があります。

ym := year + month
q = sq.Select(
        "id", "date", "customer_name",
    ).
        From("bookings").
        Where(sq.Eq{"DATE_FORMAT(date, '%Y%m')": ym})


MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.7 日付および時間関数