MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでMM/DD/YYYY形式の日付をUnixタイムスタンプに変換する方法

MySQLでMM/DD/YYYY形式の日付をUnixタイムスタンプに変換する方法

MySQLでは、STR_TO_DATE()関数とUNIX_TIMESTAMP()関数を組み合わせることで、MM/DD/YYYY形式の日付文字列をUnixタイムスタンプに簡単に変換できます。

基本となる構文は以下の通りです。

SELECT UNIX_TIMESTAMP(STR_TO_DATE(yourColumnName, '%m/%d/%Y')) FROM yourTableName;

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> CREATE TABLE DemoTable
    (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    dateConvertToUnix VARCHAR(100)
    );
Query OK, 0 rows affected (0.58 sec)

テストデータの挿入

INSERT文を使って、日付形式の文字列データを登録します。

mysql> INSERT INTO DemoTable(dateConvertToUnix) VALUES('01/10/2001');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable(dateConvertToUnix) VALUES('03/31/2010');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable(dateConvertToUnix) VALUES('12/31/2016');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable(dateConvertToUnix) VALUES('04/27/2019');
Query OK, 1 row affected (0.10 sec)

登録データの確認

SELECT文ですべてのレコードを表示してみます。

mysql> SELECT * FROM DemoTable;
+----+-------------------+
| Id | dateConvertToUnix |
+----+-------------------+
| 1  | 01/10/2001        |
| 2  | 03/31/2010        |
| 3  | 12/31/2016        |
| 4  | 04/27/2019        |
+----+-------------------+
4 rows in set (0.00 sec)

Unixタイムスタンプへの変換クエリ

次のクエリを実行すると、MM/DD/YYYY形式の日付がUnixタイムスタンプに変換されます。

mysql> SELECT UNIX_TIMESTAMP(STR_TO_DATE(dateConvertToUnix, '%m/%d/%Y')) FROM DemoTable;

実行結果は以下のようになります。

+-----------------------------------------------------------+
| UNIX_TIMESTAMP(str_to_date(dateConvertToUnix,'%m/%d/%Y')) |
+-----------------------------------------------------------+
| 979065000                                                 |
| 1269973800                                                |
| 1483122600                                                |
| 1556303400                                                |
+-----------------------------------------------------------+
4 rows in set (0.00 sec)

使用している関数の解説

STR_TO_DATE(dateConvertToUnix, '%m/%d/%Y')は、文字列を日付型(DATE)に変換する関数です。フォーマット指定子の意味は以下の通りです。

  • %m:月(2桁の数値)
  • %d:日(2桁の数値)
  • %Y:年(4桁の数値)

続いて、UNIX_TIMESTAMP()関数がその日付値をUnixタイムスタンプ(1970年1月1日00:00:00 UTCからの経過秒数)に変換します。この2つの関数を組み合わせれば、保存形式が異なる日付文字列でも、フォーマット指定子を変更するだけで柔軟にUnixタイムスタンプへ変換できます。

  1. PHP・MySQLで日付形式をdd/mm/yyyyに変更する方法

    PHPやMySQLでは、日付の表示形式を自由に変更できます。本記事では、日付を「dd/mm/yyyy(日/月/年)」形式に変換する方法を、PHPとMySQLそれぞれのケースについて解説します。PHPで日付形式を変更する方法PHPでは、date()関数を使って日付形式を簡単に変更できます。基本構文は以下の通りです。date(d/m/Y, 日時の変数);また、文字列を日付として扱う場合は、strtotime()関数を使用します。この関数は、日付を表す文字列をUnixタイムスタンプに変換してくれるため、date()関数と組み合わせて使うのが一般的です。以下は、日時を「dd/mm/yyyy」形式に整形

  2. Pythonで日付(datetime)をUnixタイムスタンプに変換する方法

    Pythonでは、標準ライブラリのdatetimeモジュールを使って、日時オブジェクトをUnixタイムスタンプ(UTCタイムスタンプ)に変換できます。すでにUTCのdatetimeオブジェクトを持っている場合は、timestamp()メソッドを呼び出すだけで、エポック(1970年1月1日 0時0分0秒 UTC)からの経過秒数を取得できます。 一方、datetimeオブジェクトがローカルタイムゾーンの状態になっている場合は、まずreplace()メソッドなどでタイムゾーン情報を明示的に設定してから、タイムスタンプを取得する必要があります。タイムゾーン情報がないまま変換すると、意図しない値になる可