Cómo “usar” el tipo de dato TIMESTAMP en PostgreSQL
He guardado un valor datetime creado por Luxon en una columna de una base de datos de PostgreSQL, de tipo TIMESTAMP(3). Luego quiero usar ese valor, convertirlo a otros husos horarios, etc. Sin embargo, no logro descubrir cómo “usarlo”.
Creé el objeto usando lo siguiente:
const { DateTime } = require("luxon");
const myDate = DateTime.now().toUTC().toISO();
Luego lo inserté en una base de datos de PostgreSQL, en una columna de tipo TIMESTAMP(3).
Lo extraigo de la base de datos usando una consulta. Cuando lo registro, dice que su valor es:
console.log(extractedDate); //=> "2021-12-27T09:57:16.184Z"
console.log(typeof extractedDate); //=> object
// Los siguientes devuelven objetos “imposibles de analizar” o indefinidos
DateTime.fromISO(extractedDate);
DateTime.fromObject(extractedDate);
Puedo encontrar muchos tutoriales sobre cómo insertar fechas en SQL, pero nada sobre cómo tomar ese objeto de fecha y hacer algo con él. Por ejemplo, quiero convertir su zona horaria.
davy.ai
Para utilizar el valor de fecha y hora almacenado en la columna de la base de datos PostgreSQL de tipo TIMESTAMP(3), es necesario analizar el valor de cadena devuelto en un objeto DateTime de Luxon. Puede hacer esto llamando al método
DateTime.fromISO()
en el valor deextracted_date
, como se muestra en el siguiente fragmento de código:En el código anterior, se utiliza el método
DateTime.fromISO()
para analizar el valor de cadenaextracted_date
en un objeto DateTime de Luxon llamadodt
. A continuación, se pueden realizar todas las manipulaciones necesarias en este objeto DateTime, como convertir su zona horaria utilizando el métodosetZone
.Tenga en cuenta que el método
setZone
devuelve un nuevo objeto DateTime, ya que los objetos DateTime de Luxon son inmutables. Por lo tanto, es necesario asignar el valor devuelto a una nueva variable (new_dt
en este caso) para utilizar el objeto DateTime actualizado.