MySQLでYYYY-MM-DD形式の日付をUNIXタイムスタンプに変換する方法
MySQLで日付(YYYY-MM-DD形式)をUNIXタイムスタンプに変換するには、UNIX_TIMESTAMP() 関数を使用します。この関数は、指定した日時を「1970年1月1日 00:00:00 UTC」からの経過秒数に変換してくれます。
テーブルの作成
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable1997
(
DueDate date
);
Query OK, 0 rows affected (0.58 sec)レコードの挿入
INSERTコマンドを使用して、いくつかのレコードをテーブルに挿入します。
mysql> insert into DemoTable1997 values('2018-10-11');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1997 values('2019-12-21');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1997 values('2017-01-31');
Query OK, 1 row affected (0.11 sec)レコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from DemoTable1997;
実行結果は以下の通りです。
+------------+ | DueDate | +------------+ | 2018-10-11 | | 2019-12-21 | | 2017-01-31 | +------------+ 3 rows in set (0.00 sec)
UNIXタイムスタンプへの変換クエリ
YYYY-MM-DD形式の日付をUNIXタイムスタンプに変換するには、CAST()で日付型に変換した値をUNIX_TIMESTAMP()に渡します。実際のクエリは以下の通りです。
mysql> select unix_timestamp(cast(DueDate as date)) as Result from DemoTable1997;
実行結果は以下の通りです。
+------------+ | Result | +------------+ | 1539196200 | | 1576866600 | | 1485801000 | +------------+ 3 rows in set (0.00 sec)
補足ポイント
UNIX_TIMESTAMP()関数は、引数を指定せずに呼び出すと現在日時のタイムスタンプを返し、日付文字列やDATE型の値を渡すとその日時に対応するタイムスタンプを返します。また、変換結果はMySQLサーバーのタイムゾーン設定の影響を受けるため、運用環境によって値が異なる場合がある点に注意してください。
-
MySQLでMM/YY形式の日付をYYYY-MM-DD形式に変換する方法
MySQLで「11/15」のようなMM/YY形式の文字列を「2015-11-10」のようなYYYY-MM-DD形式の日付に変換するには、str_to_date()関数を使用します。この関数は、指定したフォーマットに従って文字列を日付値へ変換できる便利な関数です。まずは、サンプル用のテーブルを作成し、日付データを登録していきましょう。テーブルの作成例mysql> create table demo72 -> ( -> due_date varchar(40) -> );Query OK, 0 rows affected (2.96 sec)次に、INSE
-
Pythonで日付(datetime)をUnixタイムスタンプに変換する方法
Pythonでは、標準ライブラリのdatetimeモジュールを使って、日時オブジェクトをUnixタイムスタンプ(UTCタイムスタンプ)に変換できます。すでにUTCのdatetimeオブジェクトを持っている場合は、timestamp()メソッドを呼び出すだけで、エポック(1970年1月1日 0時0分0秒 UTC)からの経過秒数を取得できます。 一方、datetimeオブジェクトがローカルタイムゾーンの状態になっている場合は、まずreplace()メソッドなどでタイムゾーン情報を明示的に設定してから、タイムスタンプを取得する必要があります。タイムゾーン情報がないまま変換すると、意図しない値になる可