Mysql
 sql >> Database >  >> RDS >> Mysql

La conversione del timestamp Unix è diversa in Mysql e Oracle

Il timestamp Unix è in secondi da 1970-01-01 00:00:00 UTC che in realtà è 1970-01-01 01:00:00 nel tuo fuso orario locale (o nel fuso orario in cui si trova il tuo server MySQL). Sembra FROM_UNIXTIME ne tiene conto.

Per Oracle puoi usare questa funzione:

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;

Presumo che se ti piace ottenere l'ora UTC in MySQL, devi eseguire

select 
   CONVERT_TZ(FROM_UNIXTIME(1387444958),'{your local timezone}','UTC') 
from dual;