その他の方法:CAST関数、TIMESTAMP_ADD関数、FROM_UNIXTIME関数、STR_TO_DATE関数
MySQLでDATETIME型から時間要素を取り除く方法
MySQLのDATETIME型には、日付と時間情報が含まれています。しかし、場合によっては、日付情報のみが必要となり、時間要素を取り除きたいことがあります。このチュートリアルでは、さまざまな方法でDATETIME型から時間要素を取り除く方法を解説します。
方法
- DATE関数
DATE関数は、DATETIME型から日付部分のみを抽出します。
SELECT DATE(datetime_column) FROM table_name;
例
SELECT DATE('2024-04-07 11:55:00');
出力
2024-04-07
- EXTRACT関数
SELECT EXTRACT(YEAR FROM datetime_column),
EXTRACT(MONTH FROM datetime_column),
EXTRACT(DAY FROM datetime_column)
FROM table_name;
SELECT EXTRACT(YEAR FROM '2024-04-07 11:55:00'),
EXTRACT(MONTH FROM '2024-04-07 11:55:00'),
EXTRACT(DAY FROM '2024-04-07 11:55:00');
2024
4
7
- SUBSTRING関数
SUBSTRING関数は、文字列の一部を切り取ることができます。
SELECT SUBSTRING(datetime_column, 1, 10) FROM table_name;
SELECT SUBSTRING('2024-04-07 11:55:00', 1, 10);
2024-04-07
- CASE式
CASE式を使用して、条件に基づいて異なる値を抽出できます。
SELECT CASE WHEN HOUR(datetime_column) = 0
THEN DATE(datetime_column)
ELSE datetime_column
END
FROM table_name;
SELECT CASE WHEN HOUR('2024-04-07 11:55:00') = 0
THEN DATE('2024-04-07 11:55:00')
ELSE '2024-04-07 11:55:00'
END;
2024-04-07
上記のように、MySQLでDATETIME型から時間要素を取り除く方法はいくつかあります。それぞれの方法には長所と短所があり、状況に合わせて最適な方法を選択する必要があります。
-- テーブルの作成
CREATE TABLE IF NOT EXISTS `my_table` (
`id` INT NOT NULL AUTO_INCREMENT,
`datetime_column` DATETIME NOT NULL,
PRIMARY KEY (`id`)
);
-- データの挿入
INSERT INTO `my_table` (`datetime_column`) VALUES
('2024-04-07 11:55:00'),
('2024-04-08 12:00:00'),
('2024-04-09 13:00:00');
-- DATE関数による日付部分の抽出
SELECT DATE(`datetime_column`) FROM `my_table`;
-- EXTRACT関数による日付部分の抽出
SELECT EXTRACT(YEAR FROM `datetime_column`),
EXTRACT(MONTH FROM `datetime_column`),
EXTRACT(DAY FROM `datetime_column`)
FROM `my_table`;
-- SUBSTRING関数による日付部分の抽出
SELECT SUBSTRING(`datetime_column`, 1, 10) FROM `my_table`;
-- CASE式による日付部分の抽出
SELECT CASE WHEN HOUR(`datetime_column`) = 0
THEN DATE(`datetime_column`)
ELSE `datetime_column`
END
FROM `my_table`;
2024-04-07
2024-04-08
2024-04-09
2024 4 7
2024 4 8
2024 4 9
2024-04-07
2024-04-08
2024-04-09
2024-04-07
2024-04-08
2024-04-09
CAST関数は、データ型を変換するために使用できます。DATETIME型をDATE型に変換することで、時間要素を取り除くことができます。
SELECT CAST(datetime_column AS DATE) FROM table_name;
SELECT CAST('2024-04-07 11:55:00' AS DATE);
2024-04-07
TIMESTAMP_ADD関数は、TIMESTAMP型に時間間隔を加算するために使用できます。時間間隔を0に設定することで、時間要素を取り除くことができます。
SELECT TIMESTAMP_ADD(datetime_column, INTERVAL 0 SECOND) FROM table_name;
SELECT TIMESTAMP_ADD('2024-04-07 11:55:00', INTERVAL 0 SECOND);
2024-04-07 00:00:00
FROM_UNIXTIME関数は、UNIXタイムスタンプからDATETIME型に変換するために使用できます。UNIXタイムスタンプは、時間要素のみを含む数値です。
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(datetime_column));
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP('2024-04-07 11:55:00'));
2024-04-07 00:00:00
STR_TO_DATE関数は、文字列をDATE型に変換するために使用できます。文字列形式をYYYY-MM-DD
に設定することで、時間要素を取り除くことができます。
SELECT STR_TO_DATE(datetime_column, '%Y-%m-%d');
SELECT STR_TO_DATE('2024-04-07 11:55:00', '%Y-%m-%d');
2024-04-07
sql mysql datetime