[MySQL]Datetime型をDate型に変換する方法

MySQLDatetime型Date型 に変換する方法を説明したいと思います。 Datetime型 のフィールドを Date型 として取得したり、 Where句 の条件として日時ではなく日付で絞り込みを行いたい場合などに活用できると思います。
CAST を使用することで Datetime型 から Date型 への変換を行うことができます。

Datetime型からDate型へ変換する

例えば以下のようなレコードがあった場合、

Datetime CAST Date 1

created (登録日時)のフィールドを Datetime型 から Date型 に変換してみます。

SELECT id, CAST(created AS DATE), updated FROM `table_name`;

上記の SQL を実行すると...

Datetime CAST Date 2

こんな感じで Datetime型Date型 に変換されます。

Where 句で CAST を使ってみる

MySQLDatetime型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 の作成方法をしっかり覚えておきたいですね。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です