はじめに
データベース操作では、文字列型の日付データを適切な日付型(DATEやDATETIME)に変換することがよく求められます。これにより、日付データに対するクエリや計算が容易になります。本記事では、SQLでCAST関数を使用して文字列型を日付型に変換する方法について解説し、サンプルデータを用いて具体例を示します。
基本的な概念とCAST関数
CAST関数とは
CAST関数は、あるデータ型を別のデータ型に変換するために使用されます。例えば、文字列型を数値型や日付型に変換することができます。
構文
CAST(expression AS target_data_type)
-
expression
: 変換したい値や列を指定します。 -
target_data_type
: 変換後のデータ型を指定します。
サンプルデータを用いた例
ここでは、MySQLを使用して具体例を示します。
1. テーブルの作成とサンプルデータの挿入
まず、サンプルデータを用意するためのテーブルを作成し、データを挿入します。
-- テーブルの作成
CREATE TABLE sample_data (
id INT,
date_str VARCHAR(20)
);
-- サンプルデータの挿入
INSERT INTO sample_data (id, date_str) VALUES
(1, '2024-06-22 10:20:30'),
(2, '2024-07-01 15:45:00'),
(3, '2023-12-31 23:59:59');
2. 文字列型をDATETIME型に変換するクエリ
標準的な日付フォーマット(YYYY-MM-DD HH:MI:SS
)の場合、CAST関数を使用して文字列型の日付をDATETIME型に変換します。
-- 文字列型の日付をDATETIME型に変換するクエリ
SELECT
id,
date_str,
CAST(date_str AS DATETIME) AS datetime_value
FROM
sample_data;
結果
このクエリを実行すると、以下のような結果が得られます。
id | date_str | datetime_value |
---|---|---|
1 | 2024-06-22 10:20:30 | 2024-06-22 10:20:30 |
2 | 2024-07-01 15:45:00 | 2024-07-01 15:45:00 |
3 | 2023-12-31 23:59:59 | 2023-12-31 23:59:59 |
3. 異なるフォーマットの日付文字列の変換
日付のフォーマットが異なる場合、CAST関数だけではなく、STR_TO_DATE
関数などを併用してフォーマットを指定する必要があります。例えば、日付が「2024/06/22 10:20:30」の形式で保存されている場合、以下のように変換します。
テーブルの作成とデータ挿入(異なるフォーマット)
-- テーブルの作成
CREATE TABLE sample_data_format (
id INT,
date_str VARCHAR(20)
);
-- サンプルデータの挿入
INSERT INTO sample_data_format (id, date_str) VALUES
(1, '2024/06/22 10:20:30'),
(2, '2024/07/01 15:45:00'),
(3, '2023/12/31 23:59:59');
文字列型をDATETIME型に変換するクエリ(異なるフォーマット)
-- 文字列型の日付をDATETIME型に変換するクエリ(異なるフォーマット)
SELECT
id,
date_str,
STR_TO_DATE(date_str, '%Y/%m/%d %H:%i:%s') AS datetime_value
FROM
sample_data_format;
結果
このクエリを実行すると、以下のような結果が得られます。
id | date_str | datetime_value |
---|---|---|
1 | 2024/06/22 10:20:30 | 2024-06-22 10:20:30 |
2 | 2024/07/01 15:45:00 | 2024-07-01 15:45:00 |
3 | 2023/12/31 23:59:59 | 2023-12-31 23:59:59 |
まとめ
CAST関数を使用することで、文字列型のデータをDATETIME型に変換し、日付と時刻として扱うことができます。異なるフォーマットの日付文字列を変換する場合は、STR_TO_DATE
関数などを併用して適切なフォーマットを指定する必要があります。これにより、日付データに対するクエリや計算が容易になり、データの分析や処理が効率的に行えます。