sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo convertir una marca de tiempo de Unix en un valor de fecha/hora en PostgreSQL

En PostgreSQL, podemos usar to_timestamp() función para convertir un valor de marca de tiempo de Unix en un valor de fecha/hora.

La marca de tiempo de Unix (también conocida como hora de época de Unix, hora de Unix o hora POSIX) es la cantidad de segundos que han transcurrido desde las 00:00:00 del jueves 1 de enero de 1970, hora universal coordinada (UTC).

Ejemplo

Aquí hay un ejemplo simple para demostrarlo:

SELECT to_timestamp(1912995045);

Resultado:

2030-08-15 03:30:45+00

En este caso, pasé un valor de marca de tiempo específico de Unix.

Aquí hay otro ejemplo que demuestra aún más cómo el resultado refleja el valor de marca de tiempo de Unix proporcionado:

SELECT 
    now() AS "Current Date/Time",
    extract(epoch from now()) AS "Unix Timestamp",
    to_timestamp(extract(epoch from now())) AS "And back again...";

Resultado:

       Current Date/Time       |  Unix Timestamp   |       And back again...       
-------------------------------+-------------------+-------------------------------
 2022-04-19 19:25:27.068737+00 | 1650396327.068737 | 2022-04-19 19:25:27.068737+00

En este ejemplo usamos now() para dar salida a la fecha y hora actual. Luego usamos extract() para obtener la marca de tiempo de Unix a partir de ese valor de fecha y hora. Finalmente, usamos to_timestamp() para volver a convertirlo al valor original de fecha y hora.

Convertir a fecha

También podemos emitir el resultado como una date valor para eliminar la parte de tiempo:

SELECT to_timestamp(1912995045)::date;

Resultado:

2030-08-15