MySQLのDATETIMEフィールドから日付のみをスマートに抽出:3つのアプローチ
MySQLでDATETIMEフィールドから日付のみを選択する方法
DATE() 関数を使用する
説明:
DATE()
関数は、DATETIMEフィールドから日付部分のみを抽出します。
構文:
SELECT DATE(datetime_field) AS date_only
FROM your_table;
例:
SELECT DATE(created_at) AS creation_date
FROM customers;
このクエリは、customers
テーブルの created_at
DATETIMEフィールドから日付部分のみを抽出し、creation_date
という名前の新しい列に格納します。結果は次のようになります。
creation_date
----------
2024-05-25
2024-05-24
2024-05-23
...
EXTRACT()
関数は、DATETIMEフィールドから日付、時間、曜日などの個別要素を抽出することができます。
SELECT EXTRACT(YEAR FROM datetime_field) AS year,
EXTRACT(MONTH FROM datetime_field) AS month,
EXTRACT(DAY FROM datetime_field) AS day
FROM your_table;
SELECT EXTRACT(YEAR FROM created_at) AS year,
EXTRACT(MONTH FROM created_at) AS month,
EXTRACT(DAY FROM created_at) AS day
FROM customers;
year | month | day
------- | -------- | --------
2024 | 5 | 25
2024 | 5 | 24
2024 | 5 | 23
...
CAST()
関数は、値をあるデータ型から別のデータ型に変換することができます。
SELECT CAST(datetime_field AS DATE) AS date_only
FROM your_table;
SELECT CAST(created_at AS DATE) AS creation_date
FROM customers;
ヒント:
- 上記のいずれの方法でも、元のDATETIMEフィールドに加えて、日付のみを含む新しい列を作成することができます。
- 必要に応じて、
WHERE
句を使用して、特定の日付のレコードのみを選択することができます。 - 結果をさらに処理するために、抽出された日付列を他の関数と組み合わせて使用することができます。
これらの方法のいずれかを使用して、MySQLのDATETIMEフィールドから日付のみを簡単に選択することができます。
補足:
- 上記の例では、
your_table
という名前のテーブルを使用しています。これはプレースホルダなので、実際のテーブル名に置き換えてください。
SELECT
customers.id,
customers.name,
DATE(customers.created_at) AS creation_date
FROM customers;
このコードは以下の結果を返します。
id | name | creation_date
------- | -------- | --------
1 | 田中一郎 | 2024-05-25
2 | 佐藤二郎 | 2024-05-24
3 | 鈴木三郎 | 2024-05-23
...
SELECT
句では、抽出したい列を指定します。この例では、id
、name
、およびcreation_date
列を選択します。FROM
句では、データを取得するテーブルを指定します。この例では、customers
テーブルを選択します。DATE(customers.created_at) AS creation_date
は、created_at
フィールドから日付部分のみを抽出し、creation_date
という名前の新しい列に格納します。
このサンプルコードをどのように変更して、ニーズに合わせることができますか?
- 他の列を含めるには、
SELECT
句に列を追加します。 - 特定の日付のレコードのみを選択するには、
WHERE
句を追加します。
他の方法
SUBSTRING()
関数は、文字列の一部を抽出するために使用することができます。
SELECT SUBSTRING(datetime_field, 1, 10) AS date_only
FROM your_table;
SELECT SUBSTRING(created_at, 1, 10) AS creation_date
FROM customers;
creation_date
----------
2024-05-25
2024-05-24
2024-05-23
...
LEFT()
関数は、文字列の先頭から指定した数の文字を抽出するために使用することができます。
SELECT LEFT(datetime_field, 10) AS date_only
FROM your_table;
SELECT LEFT(created_at, 10) AS creation_date
FROM customers;
STR_TO_DATE()
関数は、文字列を日付または時刻値に変換するために使用することができます。
SELECT STR_TO_DATE(datetime_field, '%Y-%m-%d') AS date_only
FROM your_table;
SELECT STR_TO_DATE(created_at, '%Y-%m-%d') AS creation_date
FROM customers;
フォーマット済み文字列リテラルを使用する
フォーマット済み文字列リテラルを使用して、DATETIMEフィールドを直接日付文字列に変換することができます。
SELECT datetime_field %Y-%m-%d AS date_only
FROM your_table;
SELECT created_at %Y-%m-%d AS creation_date
FROM customers;
これらの方法はすべて、MySQLでDATETIMEフィールドから日付のみを選択するために使用することができます。どの方法を使用するかは、個々のニーズと好みによって異なります。
mysql date