Sqlで日付・時刻の変換について

型について

OraclePostgresqlMysql
TIMESTAMP, TIMESTAMP WITH TIME ZONETIMESTAMP, TIMESTAMPTZTIMESTAMP
精度9桁6桁6桁
Nano秒Micro秒Micro秒
範囲BC4712年~9999年BC4713年~294276年1970年~2038年
サイズ11~13Byte
(精度の指定可能)
8Byte4Byte

日付を文字列に

※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'));

タイトルとURLをコピーしました