Dấu thời gian Unix là giây kể từ 1970-01-01 00:00:00 UTC
thực ra là 1970-01-01 01:00:00
trong múi giờ địa phương của bạn (hoặc múi giờ nơi đặt máy chủ MySQL của bạn). Có vẻ như FROM_UNIXTIME
có tính đến điều này.
Đối với Oracle, bạn có thể sử dụng chức năng này:
FUNCTION UnixTime2Timestamp(UnixTime IN NUMBER) RETURN TIMESTAMP IS
BEGIN
RETURN (TIMESTAMP '1970-01-01 00:00:00 UTC' + UnixTime * INTERVAL '1' SECOND) AT LOCAL;
END UnixTime2Timestamp;
Tôi giả sử nếu bạn muốn có thời gian UTC trong MySQL thì bạn phải chạy
select
CONVERT_TZ(FROM_UNIXTIME(1387444958),'{your local timezone}','UTC')
from dual;