DATE 関数、STR_TO_DATE 関数、FROM_UNIXTIME 関数の比較
MySQL クエリでタイムスタンプを日付に変換する方法
DATE 関数を使用する
DATE 関数は、タイムスタンプから日付部分のみを抽出します。
SELECT DATE(timestamp_column) FROM table_name;
このクエリは、table_name
テーブルの timestamp_column
列にあるすべてのタイムスタンプを日付に変換し、結果を表示します。
STR_TO_DATE 関数は、文字列を日付に変換します。
SELECT STR_TO_DATE(timestamp_column, '%Y-%m-%d') FROM table_name;
FROM_UNIXTIME 関数は、UNIX タイムスタンプを日付に変換します。
SELECT FROM_UNIXTIME(timestamp_column) FROM table_name;
例
以下の例では、各方法を使用してタイムスタンプを日付に変換する方法を示します。
-- テーブルとデータ
CREATE TABLE example_table (
id INT,
timestamp_column TIMESTAMP
);
INSERT INTO example_table (id, timestamp_column) VALUES
(1, '2023-12-31 23:59:59'),
(2, '2024-01-01 00:00:00'),
(3, '2024-01-02 01:02:03');
-- DATE 関数
SELECT DATE(timestamp_column) FROM example_table;
-- 結果
-- 2023-12-31
-- 2024-01-01
-- 2024-01-02
-- STR_TO_DATE 関数
SELECT STR_TO_DATE(timestamp_column, '%Y-%m-%d') FROM example_table;
-- 結果
-- 2023-12-31
-- 2024-01-01
-- 2024-01-02
-- FROM_UNIXTIME 関数
SELECT FROM_UNIXTIME(timestamp_column) FROM example_table;
-- 結果
-- 2023-12-31
-- 2024-01-01
-- 2024-01-02
- 日付部分のみを抽出したい場合は、DATE 関数を使用するのが最も簡単です。
- 特定の形式で日付を変換したい場合は、STR_TO_DATE 関数を使用します。
- UNIX タイムスタンプを日付に変換したい場合は、FROM_UNIXTIME 関数を使用します。
MySQL でタイムスタンプを日付に変換するには、DATE 関数、STR_TO_DATE 関数、FROM_UNIXTIME 関数のいずれかを使用することができます。どの方法を使用するかは、状況によって異なります。
-- テーブルとデータ
CREATE TABLE example_table (
id INT,
timestamp_column TIMESTAMP
);
INSERT INTO example_table (id, timestamp_column) VALUES
(1, '2023-12-31 23:59:59'),
(2, '2024-01-01 00:00:00'),
(3, '2024-01-02 01:02:03');
-- DATE 関数
SELECT DATE(timestamp_column) FROM example_table;
-- 結果
-- 2023-12-31
-- 2024-01-01
-- 2024-01-02
-- STR_TO_DATE 関数
SELECT STR_TO_DATE(timestamp_column, '%Y-%m-%d') FROM example_table;
-- 結果
-- 2023-12-31
-- 2024-01-01
-- 2024-01-02
-- FROM_UNIXTIME 関数
SELECT FROM_UNIXTIME(timestamp_column) FROM example_table;
-- 結果
-- 2023-12-31
-- 2024-01-01
-- 2024-01-02
-- 特定の形式で日付を変換する
SELECT STR_TO_DATE(timestamp_column, '%Y年%m月%d日') FROM example_table;
-- 結果
-- 2023年12月31日
-- 2024年1月1日
-- 2024年1月2日
-- 日付と時刻の一部のみを抽出する
SELECT DATE(timestamp_column), HOUR(timestamp_column) FROM example_table;
-- 結果
-- 2023-12-31 23
-- 2024-01-01 00
-- 2024-01-02 01
このサンプルコードは、さまざまな方法でタイムスタンプを日付に変換する方法を示しています。必要に応じて、コードを変更して独自の要件に合わせて使用することができます。
タイムスタンプを日付に変換するその他の方法
SUBSTRING 関数は、文字列の一部を抽出することができます。
SELECT SUBSTRING(timestamp_column, 1, 10) FROM table_name;
LEFT 関数を使用する
LEFT 関数は、文字列の左側にある部分を抽出することができます。
SELECT LEFT(timestamp_column, 10) FROM table_name;
CONCAT 関数は、複数の文字列を連結することができます。
SELECT CONCAT(YEAR(timestamp_column), '-', MONTH(timestamp_column), '-', DAY(timestamp_column)) FROM table_name;
CASE 式を使用する
CASE 式は、条件によって異なる値を返すことができます。
SELECT CASE WHEN timestamp_column IS NULL THEN NULL
ELSE DATE(timestamp_column)
END
FROM table_name;
これらの方法は、DATE 関数、STR_TO_DATE 関数、FROM_UNIXTIME 関数よりも複雑ですが、より柔軟な方法でタイムスタンプを日付に変換することができます。
MySQL でタイムスタンプを日付に変換するには、さまざまな方法があります。どの方法を使用するかは、状況と要件によって異なります。
mysql sql date-formatting