Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A conversão de carimbo de data/hora do Unix é diferente no MySQL e no Oracle


O carimbo de data/hora do Unix é segundos a partir de 1970-01-01 00:00:00 UTC que na verdade é 1970-01-01 01:00:00 em seu fuso horário local (ou o fuso horário onde seu servidor MySQL está localizado). Parece FROM_UNIXTIME leva isso em consideração.

Para Oracle você pode usar esta função:
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;

Eu suponho que se você gosta de obter a hora UTC no MySQL, então você deve executar
select 
   CONVERT_TZ(FROM_UNIXTIME(1387444958),'{your local timezone}','UTC') 
from dual;