Trong Cơ sở dữ liệu Oracle, chúng ta có thể sử dụng kỹ thuật sau để trả về một ngày từ giá trị dấu thời gian Unix.
Dấu thời gian Unix (còn được gọi là thời gian Unix Epoch, Unix time, hoặc POSIX time) là số giây đã trôi qua kể từ 00:00:00 Thứ Năm, ngày 1 tháng 1 năm 1970, Giờ Phối hợp Quốc tế (UTC).
Ví dụ
Dưới đây là một ví dụ về chuyển đổi dấu thời gian Unix thành DATE
giá trị:
SELECT
TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL;
Kết quả:
18-APR-22
Ở đây, chúng tôi sử dụng TO_DATE()
hàm tạo ngày 1970-01-01. Sau đó, chúng tôi thêm dấu thời gian Unix của chúng tôi vào ngày đó để nhận được kết quả của chúng tôi. Trong trường hợp này, chúng tôi sử dụng NUMTODSINTERVAL()
để chuyển đổi dấu thời gian Unix thành một khoảng thời gian interval
giá trị. Kết quả là một DATE
giá trị.
Lấy ngày và giờ
Chúng ta có thể sử dụng TO_TIMESTAMP()
hàm để xuất ra một timestamp
giá trị:
SELECT
TO_TIMESTAMP( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL;
Kết quả:
18-APR-22 10.31.13.000000 PM
Một cách khác để làm như sau:
SELECT TO_CHAR(
TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + numtodsinterval( 1650321073, 'SECOND' ),
'YYYY-MM-DD HH24:MI:SS'
)
FROM DUAL;
Kết quả:
2022-04-18 22:31:13
Ở đây, chúng tôi sử dụng TO_CHAR()
hàm xuất kết quả trả về bởi TO_DATE()
ở định dạng ưa thích của chúng tôi. Hàm này trả về kết quả của nó dưới dạng VARCHAR2
giá trị.