В Oracle Database можем да използваме следната техника, за да върнем дата от стойност на времеви печат на Unix.
Unix timestamp (известен също като Unix Epoch time, Unix time или POSIX time) е броят на секундите, които са изминали от 00:00:00 четвъртък, 1 януари 1970 г., координирано универсално време (UTC).
Пример
Ето пример за преобразуване на времеви печат на Unix в DATE
стойност:
SELECT
TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL;
Резултат:
18-APR-22
Тук използваме TO_DATE()
функция за конструиране на дата 1970-01-01. След това добавяме нашата дата за време на Unix към тази дата, за да получим нашия резултат. В този случай използваме NUMTODSINTERVAL()
за да конвертирате времевата марка на Unix в interval
стойност. Резултатът е DATE
стойност.
Вземете датата и часа
Можем да използваме TO_TIMESTAMP()
функция за извеждане на timestamp
стойност:
SELECT
TO_TIMESTAMP( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL;
Резултат:
18-APR-22 10.31.13.000000 PM
Друг начин да го направите е така:
SELECT TO_CHAR(
TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + numtodsinterval( 1650321073, 'SECOND' ),
'YYYY-MM-DD HH24:MI:SS'
)
FROM DUAL;
Резултат:
2022-04-18 22:31:13
Тук използваме TO_CHAR()
функция за извеждане на резултата, върнат от TO_DATE()
в предпочитания от нас формат. Тази функция връща резултата си като VARCHAR2
стойност.