MySQL
で Datetime型
を Date型
に変換する方法を説明したいと思います。 Datetime型
のフィールドを Date型
として取得したり、 Where句
の条件として日時ではなく日付で絞り込みを行いたい場合などに活用できると思います。
CAST
を使用することで Datetime型
から Date型
への変換を行うことができます。
Datetime型からDate型へ変換する
例えば以下のようなレコードがあった場合、
created
(登録日時)のフィールドを Datetime型
から Date型
に変換してみます。
SELECT id, CAST(created AS DATE), updated FROM `table_name`;
上記の SQL
を実行すると...
こんな感じで Datetime型
が Date型
に変換されます。
Where 句で CAST を使ってみる
MySQL
の Datetime型
を Where句
で比較する場合、以下のようなクエリを書く必要があります。
# 日付が一致するかを比較するクエリ
SELECT id, created, updated FROM `table_name` WHERE `created` >= '2023-07-14 00:00:00' AND `created` <= '2023-07-14 23:59:59';
Datetime型
でそのまま Where句
を書いた場合、抽出したい日付の「00:00:00」以上、「23:59:59」以下の値で絞り込みを行わなければなりません。
CAST
を使用すると、
SELECT id, created, updated FROM `register_queue` WHERE CAST(`created` AS DATE) = '2023-07-14';
こんな風にシンプルに Where句
を実装することができます。
もちろん時刻の一致や範囲指定での絞り込みであれば Datetime型
のまま絞り込みを行えば良いのですが、日付で絞り込みを行いたい場合は CAST
をうまく使ってあげると SQL
のコード量を減らしてあげることができます。
最後に
CAST
を使用して Datetime型
から Date型
へ変換することで、データ取得後の処理や条件分の実装を簡単にする効果もあると思うので、 CAST
を使用した SQL
の作成方法をしっかり覚えておきたいですね。
コメント