1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

データベース操作では、文字列型の日付データを適切な日付型(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関数などを併用して適切なフォーマットを指定する必要があります。これにより、日付データに対するクエリや計算が容易になり、データの分析や処理が効率的に行えます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?