DATE 関数、STR_TO_DATE 関数、FROM_UNIXTIME 関数の比較

2024-04-10

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


クエリのパフォーマンスを向上させるためのインデックスの活用方法

PostgreSQLで特定のインデックスを使用させる方法はいくつかあります。INDEX ヒントを使用して、特定のインデックスをクエリで使用させることができます。例このクエリは、customers テーブルの country_idx インデックスを使用して、country 列が Japan に等しい行を選択します。...


MySQL 8.0 でデータ ディレクトリを分散させる:InnoDB ファイル パーティショニングの活用

MySQL データ ディレクトリを変更するには、以下の手順に従います。MySQL サービスを停止するデータ ディレクトリを変更する前に、MySQL サービスを停止する必要があります。これにより、データが破損するのを防ぎます。データ ディレクトリを移動する...


MySQLでパフォーマンス爆上げ!行数が多いデータベースの最適化方法

データベースに格納できる行数に制限はありませんが、行数が多すぎるとパフォーマンスや管理に問題が生じる可能性があります。一般的に、100万行を超えると問題と考えられています。問題点パフォーマンスの低下: データベースのクエリ処理速度が遅くなります。...


データベースダンプファイルを使ってPostgreSQLデータベースから挿入ステートメントを取得する方法

pg_dump は PostgreSQL データベースをダンプするためのコマンドラインツールです。このツールは、データベース全体、スキーマ、または個々のテーブルをダンプすることができます。このチュートリアルでは、pg_dump を使用してデータベース内の1つのテーブルから挿入ステートメントのみを取得する方法を説明します。...


CTEで複雑なクエリを分割して読みやすく、モジュール化しよう!

CTE を使用するべき状況は以下の通りです。複雑なクエリを分割する場合複数のサブクエリや論理演算子を含む複雑なクエリは、読みづらく、理解しづらい場合があります。CTE を使用することで、このようなクエリを論理的な部分に分割し、それぞれに名前を付けることができます。これにより、クエリ全体の構造を把握しやすくなり、デバッグも容易になります。...