es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , , ,

Answer

  1. Avatar for 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 de extracted_date, como se muestra en el siguiente fragmento de código:

    const { DateTime } = require("luxon");
    
    // Supongamos que extracted_date es el valor de fecha y hora obtenido de la base de datos
    const extracted_date = "2021-12-27T09:57:16.184Z";
    
    // Analizar el valor de extracted_date en un objeto DateTime de Luxon
    const dt = DateTime.fromISO(extracted_date);
    
    // Ahora se pueden realizar todas las manipulaciones necesarias en el objeto de fecha y hora
    const new_dt = dt.setZone('America/New_York');
    
    console.log(new_dt.toISO()); // Salida: 2021-12-27T04:57:16.184-05:00
    

    En el código anterior, se utiliza el método DateTime.fromISO() para analizar el valor de cadena extracted_date en un objeto DateTime de Luxon llamado dt. A continuación, se pueden realizar todas las manipulaciones necesarias en este objeto DateTime, como convertir su zona horaria utilizando el método setZone.

    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.

Comments are closed.