MySQLとPostgreSQLのtimezoneの取り扱いの違い
環境:MySQL 5.6、PostgreSQL12 on Windows
DBのタイムゾーンはAsia/Tokyo
DATE型カラム(hogedate)に'2020-07-20'が入っている場合を考える。
MySQLでそのカラムをUNIX_TIMESTAMP(hogedate)すると2020-07-19 15:00:00のUNIX TIMESTAMPが得られる。
PostgreSQLでそのカラムをEXTRACT(EPOCH FROM hogedate)すると、2020-07-20 00:00:00のUNIX TIMESTAMPが得られる。
PostgreSQLは全体的にtimezoneを無視する印象
普通にtimestampを宣言するとtime zoneが考慮されない。
SELECT EXTRACT(EPOCH FROM timestamp '2020-07-20 00:00:00') => 1595203200 (2020-07-20 00:00:00UTCのUNIX時間)
SELECT EXTRACT(EPOCH FROM timestamp with time zone '2020-07-20 00:00:00') => 1595170800 (2020-07-19 15:00:00UTCのUNIX時間)
日本国内に閉じたシステムであれば、 無理に考慮してくれない方が扱いやすい。
参考:
PostgreSQL12 8.5. 日付/時刻データ型
https://www.postgresql.jp/document/12/html/datatype-datetime.html
#MySQL #PostgreSQL #date #timestamp #timezone