Insertar marca de tiempo actual en PostgreSQL

Bilal Shahid 15 febrero 2024
  1. ¿Qué es la marca de tiempo en PostgreSQL?
  2. Use la función NOW() para insertar la marca de tiempo actual en PostgreSQL
  3. Use la función CURRENT_TIMESTAMP para insertar la marca de tiempo actual en PostgreSQL
  4. Use la función LOCALTIMESTAMP para insertar la marca de tiempo actual en PostgreSQL
Insertar marca de tiempo actual en PostgreSQL

A menudo, tenemos que mantener los datos de fecha y hora actuales en una base de datos. Por ejemplo, es posible que deseemos mantener un registro de cuándo un cliente realiza un pedido en nuestro sitio web.

En tales situaciones, cuando nuestra aplicación o sitio web es dinámico, no es factible escribir e insertar manualmente la fecha y la hora actuales, lo que también podría dar lugar a errores humanos.

Por lo tanto, este artículo discutirá las diferentes formas de insertar la marca de tiempo actual en una tabla en PostgreSQL y su uso y limitaciones. Antes de saltar directamente a ellos, primero comprendamos el significado de la marca de tiempo.

¿Qué es la marca de tiempo en PostgreSQL?

En PostgreSQL, timestamp es un tipo de datos que almacena la fecha y la hora sin zona horaria. Un tipo de datos para cualquier lenguaje de programación es una entidad específica que se distingue por el tipo de valores que almacena.

Una variable de tipo de datos marca de tiempo se declara de la siguiente manera en PostgreSQL.

variable_name timestamp

Ahora que sabe qué es una marca de tiempo en PostgreSQL, pasemos a comprender las diferentes funciones que nos ayudan a recuperar la fecha y la hora actuales e insertarlas en una variable de marca de tiempo.

Para propósitos de comprensión, estamos creando la siguiente tabla.

create table example1
(
variable_name timestamp
);

Si queremos insertar manualmente alguna hora y fecha en esta tabla, podemos hacerlo de la siguiente manera.

INSERT INTO example1
VALUES ('2022-08-23 18:42:02');

Podemos ver que estos datos se han insertado correctamente.

insertar manualmente la hora y la fecha

Sin embargo, como comentamos anteriormente, la inserción manual de datos de hora y fecha no es una buena práctica. Por lo tanto, PostgreSQL nos proporciona diferentes funciones que podemos usar para insertar la fecha y hora actual en una variable timestamp.

Entendamos su uso uno por uno.

Use la función NOW() para insertar la marca de tiempo actual en PostgreSQL

La función NOW() en PostgreSQL devuelve la fecha y hora actual con la zona horaria. Los datos de la zona horaria utilizados están de acuerdo con la configuración del servidor de la base de datos en uso.

La función AHORA() se utiliza de la siguiente forma.

SELECT NOW();

Podemos ver que la salida devuelve el valor de la marca de tiempo con la zona horaria de la siguiente manera:

AHORA con zona horaria

Si queremos convertirlo a un valor sin zona horaria, podemos usarlo de la siguiente manera.

SELECT NOW()::timestamp;

Esto nos da la siguiente salida.

AHORA sin zona horaria

Podemos usar la función NOW() para insertar la marca de tiempo actual en una tabla. Demostrémoslo insertando algunos valores en la tabla example1.

INSERT INTO example1 VALUES (now());

El valor se insertará correctamente, como se muestra a continuación.

AHORA sin zona horaria 2

Nota: El valor de fecha y hora recuperado de NOW() se convertirá automáticamente en sin zona horaria cuando se inserte en una variable de marca de tiempo, como se muestra en la salida.

Use la función CURRENT_TIMESTAMP para insertar la marca de tiempo actual en PostgreSQL

La función CURRENT_TIMESTAMP es similar a la función NOW(), ya que también devuelve los datos de fecha y hora actual con la zona horaria.

Estas dos funciones se pueden usar indistintamente como alternativas entre sí. La función CURRENT_TIMESTAMP muestra los resultados de la siguiente manera.

SELECT CURRENT_TIMESTAMP;

CURRENT_TIMESTAMP con zona horaria

Similar a la función NOW(), podemos convertir estos datos a una marca de tiempo sin zona horaria de la siguiente manera.

SELECT CURRENT_TIMESTAMP::timestamp;

Podemos ver en el resultado que la zona horaria se ha eliminado de los datos de tiempo.

CURRENT_TIMESTAMP sin zona horaria

Podemos usar la función CURRENT_TIMESTAMP para insertar la marca de tiempo actual en una tabla. Demostrémoslo insertando algunos valores en la tabla example1.

INSERT INTO example1 VALUES (CURRENT_TIMESTAMP);

El valor se insertará correctamente, como se muestra a continuación.

CURRENT_TIMESTAMP sin zona horaria 2

Otro aspecto de usar la función CURRENT_TIMESTAMP es que podemos ajustar la precisión del tiempo devuelto. Por ejemplo, podemos ver en el resultado anterior que la hora se muestra con precisión de 6 decimales.

Sin embargo, PostgreSQL nos permite ajustar esta precisión según nuestras necesidades. La sintaxis se muestra en la siguiente consulta.

SELECT CURRENT_TIMESTAMP(2);

Precisión CURRENT_TIMESTAMP

Podemos ver en la salida que el tiempo tiene una precisión de 2 decimales, como se solicita en el parámetro de precisión. La marca de tiempo actual se puede insertar después de definir una precisión, como se muestra a continuación.

INSERT INTO example1 VALUES (CURRENT_TIMESTAMP(2));

La inserción exitosa se muestra a continuación.

Insertar precisión CURRENT_TIMESTAMP

Use la función LOCALTIMESTAMP para insertar la marca de tiempo actual en PostgreSQL

Por último, tenemos la función LOCALTIMESTAMP, que tiene el mismo propósito de recuperar la fecha y hora actual. Sin embargo, a diferencia de las funciones NOW() y CURRENT_TIMESTAMP, la función LOCALTIMESTAMP devuelve la hora y la fecha sin zona horaria.

Veamos cómo se usa para recuperar datos de marca de tiempo actuales.

SELECT LOCALTIMESTAMP;

Esto da la siguiente salida.

LOCALTIMESTAMP

Por lo tanto, podemos usar la función LOCALTIMESTAMP para insertar la marca de tiempo actual en una tabla. Demostrémoslo insertando algunos valores en la tabla example1.

INSERT INTO example1 VALUES (LOCALTIMESTAMP);

El valor se insertará correctamente, como se muestra a continuación.

Insertar LOCALTIMESTAMP

Similar a la función CURRENT_TIMESTAMP, podemos especificar la precisión de tiempo en la función LOCALTIMESTAMP. La sintaxis para esto es la siguiente:

SELECT LOCALTIMESTAMP(2);

Precisión LOCALTIMESTAMP

Podemos ver en la salida que el tiempo tiene una precisión de 2 decimales, como se solicita en el parámetro de precisión. La marca de tiempo actual se puede insertar utilizando la función LOCALTIMESTAMP especificando la precisión, como se muestra a continuación.

INSERT INTO example1 VALUES (LOCALTIMESTAMP(2));

La inserción exitosa se muestra a continuación.

Insertar precisión LOCALTIMESTAMP

Esto resume todas las diferentes formas de insertar la marca de tiempo actual en una tabla en PostgreSQL. Esperamos que haya aprendido a utilizar las funciones NOW(), CURRENT_TIMESTAMP y LOCALTIMESTAMP para insertar los valores de fecha y hora en una variable de tipo de datos timestamp.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Artículo relacionado - PostgreSQL Timestamp