型について
| Oracle | Postgresql | Mysql | |
| TIMESTAMP, TIMESTAMP WITH TIME ZONE | TIMESTAMP, TIMESTAMPTZ | TIMESTAMP | |
| 精度 | 9桁 | 6桁 | 6桁 |
| Nano秒 | Micro秒 | Micro秒 | |
| 範囲 | BC4712年~9999年 | BC4713年~294276年 | 1970年~2038年 |
| サイズ | 11~13Byte (精度の指定可能) | 8Byte | 4Byte |
日付を文字列に
※Mysqlの場合Timestampの限界は互換性のため拡張されないのでDatetime型(1000年~9999年)をお勧めします。
Oracleで
SELECT
TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS "日付",
TO_CHAR(SYSDATE, 'HH24:MI:SS') AS "時刻",
TO_CHAR(SYSDATE, 'YYYY/MM/DD(DY) HH24:MI', 'NLS_DATE_LANGUAGE = JAPANESE') AS "日本語表記"
FROM DUAL;
Postgresqlで
SELECT
TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD') AS "日付",
TO_CHAR(CURRENT_TIMESTAMP, 'HH24:MI:SS') AS "時刻",
TO_CHAR(CURRENT_TIMESTAMP, 'YYYY/MM/DD(TMDy) HH24:MI') AS "日本語表記";
Mysqlで
SELECT
DATE_FORMAT(NOW(), '%Y-%m-%d') AS "日付",
DATE_FORMAT(NOW(), '%H:%i:%s') AS "時刻",
DATE_FORMAT(NOW(), '%Y/%m/%d(%a) %H:%i') AS "日本語表記";
文字列を日時(Timestamp)に変換(insert or update)
Oracle
TO_TIMESTAMP('2025-12-10 15:10:20', 'YYYY-MM-DD HH24:MI:SS')
insert into testTable values (TO_TIMESTAMP('2025-12-10 15:10:20', 'YYYY-MM-DD HH24:MI:SS'));
Postgresql
'2025-12-10 15:10:20'
insert into testTable values (TO_TIMESTAMP('2025-12-10 15:10:20'));
Mysql(Timestamp, Datetime同様)
'2025-12-10 15:10:20'
insert into testTable values (TO_TIMESTAMP('2025-12-10 15:10:20'));
