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.