V databázi Oracle můžeme k vrácení data z hodnoty časového razítka Unix použít následující techniku.
Unixové časové razítko (také známé jako Unix Epoch time, Unix time nebo POSIX time) je počet sekund, které uplynuly od 00:00:00 čtvrtek 1. ledna 1970 koordinovaného světového času (UTC).
Příklad
Zde je příklad převodu unixového časového razítka na DATE hodnota:
SELECT
TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL; Výsledek:
18-APR-22
Zde používáme TO_DATE() funkce ke konstrukci data 1970-01-01. K tomuto datu pak přidáme naše unixové časové razítko, abychom získali náš výsledek. V tomto případě použijeme NUMTODSINTERVAL() převést unixové časové razítko na interval hodnota. Výsledkem je DATE hodnotu.
Získejte datum a čas
Můžeme použít TO_TIMESTAMP() funkce pro výstup timestamp hodnota:
SELECT
TO_TIMESTAMP( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL; Výsledek:
18-APR-22 10.31.13.000000 PM
Další způsob, jak to udělat, je tento:
SELECT TO_CHAR(
TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + numtodsinterval( 1650321073, 'SECOND' ),
'YYYY-MM-DD HH24:MI:SS'
)
FROM DUAL; Výsledek:
2022-04-18 22:31:13
Zde používáme TO_CHAR() funkce pro výstup výsledku vráceného TO_DATE() v námi preferovaném formátu. Tato funkce vrátí výsledek jako VARCHAR2 hodnotu.