PostgreSQL: verifique la fecha y la hora en relación con la actualidad

Bilal Shahid 20 junio 2023
  1. PostgreSQL: verifique la fecha y la hora en relación con la actualidad
  2. Función AHORA() de PostgreSQL
PostgreSQL: verifique la fecha y la hora en relación con la actualidad

Este tutorial demuestra cómo comprobar la fecha y la hora relativas a hoy en PostgreSQL.

PostgreSQL: verifique la fecha y la hora en relación con la actualidad

Al usar PostgreSQL, los usuarios a menudo enfrentan la necesidad de usar una fecha relativa a hoy en sus consultas. PostgreSQL proporciona funciones y métodos eficientes para obtener la hora y la fecha actuales.

Al verificar los datos y la hora en relación con el día de hoy, seguir los pasos adecuados puede ayudar a cambiar la región actual para obtener una marca de tiempo diferente. Algunas funciones realizan la tarea, pero es esencial comprender la funcionalidad para usarlas con precisión.

Comencemos con la función AHORA() a continuación.

Función AHORA() de PostgreSQL

Cuando necesite usar la fecha y hora actual en su consulta, la función AHORA() funciona para brindarle exactamente eso. Como salida, el tipo de retorno de NOW() es una marca de tiempo con la zona horaria que se muestra a continuación:

SELECT NOW();

Producción :

2022-09-14 13:21:36.175627+07

La función NOW() debe devolver la fecha y la hora actuales según la zona horaria configurada en el servidor de la base de datos. Por ejemplo, si configuramos la zona horaria en Los Ángeles, la función devuelve la fecha y hora actual de Los Ángeles.

Se muestra en el siguiente ejemplo:

SET TIMEZONE='America/Los_angeles';
SELECT NOW();

Producción :

2022-09-14 02:16:21.759315-07

En el ejemplo anterior, el valor de retorno de NOW() es la fecha y hora actuales de hoy ajustadas a la nueva zona horaria asignada. También es posible obtener la fecha y la hora actuales de PostgreSQL hoy sin una zona horaria si la emite explícitamente de la siguiente manera:

SELECT NOW()::timestamp;

Producción :

2022-09-14 02:16:21.324535

La función AHORA() es bastante flexible; te permite obtener datos y tiempo del futuro. Vea el siguiente ejemplo:

SELECT (NOW() + interval '1 hour') AS after_one_hour;

Producción :

2022-09-14 03:16:21.759315-07

Esta funcionalidad no está limitada a horas; podemos extenderlo a días y minutos. Consulte los siguientes fragmentos de código:

SELECT (NOW() + interval '1 day') AS after_one_day;

Producción :

2022-09-15 02:16:21.743315-07

El siguiente es otro bloque de código:

SELECT (NOW() - interval '4 hours 15 minutes') AS after_fourhrs_15min;

Producción :

2022-09-14 10:01:21.776315-07

Utilice la función AHORA() como valores predeterminados

Al crear las tablas de su base de datos, puede usar NOW() como valor predeterminado para cualquier columna de la tabla. Primero, cree una nueva tabla con la columna created_at. Ajústelo al valor predeterminado de la función AHORA().

CREATE TABLE table_name( 
    created_at TIMESTAMPTZ DEFAULT NOW()
);

Una vez que inserta datos en las columnas de la tabla y los muestra con el comando SELECCIONAR, la columna creado_en proporciona marcas de tiempo para cada entrada de datos.

Alternativas de NOW() en PostgreSQL

Además de la función AHORA(), hay varias otras funciones que puede usar para obtener la fecha y hora actuales junto con una zona horaria. Utilice la función CURRENT_TIME o CURRENT_TIMESTAMP para obtener resultados similares a los de la función NOW().

Puedes usarlos de la siguiente manera:

SELECT CURRENT_TIMESTAMP, CURRENT_TIME;

Producción :

2022-09-14 02:16:21.759315-07 | 02:16:21.759315-07

También puede obtener la marca de tiempo actual sin zona horaria con funciones como LOCALTIME y LOCALTIMESTAMP.

SELECT LOCALTIMESTAMP, LOCALTIME;

Producción :

2022-09-14 02:16:21.759315 | 02:16:21.759315

Si hay un evento en el que solo te importa la fecha y no la hora, sustituye CURRENT_DATE por NOW(), y resulta de la siguiente manera:

SELECT * FROM tablename where dateval > NOW() -interval '1 year';

Ahora sustitúyalo por CURRENT_DATE:

SELECT * FROM tablename where dateval > CURRENT_DATE() -interval '1 year';

Solo devuelve la fecha, no la hora. NOW() y todas sus funciones relacionadas mencionadas anteriormente devuelven la hora de inicio de la transacción actual. Los valores devueltos por esta función son los mismos que están dentro de la transacción.

El siguiente ejemplo puede aclarar cualquier malentendido:

postgres =# BEGIN;
BEGIN
postgres=# SELECT NOW();
2022-09-14 02:16:21.759315-07 //output
postgres=# SELECT pg_sleep(2);
postgres=# SELECT NOW();
2022-09-14 02:16:21.759315-07 //output
postgres=# COMMIT
COMMIT

Aquí llamamos a la función a lo largo de la transacción, y los valores devueltos no cambian cada vez.

Sin embargo, si necesita la fecha y hora actuales que se actualizan a lo largo de la transacción, TIMEOFDAY lo hace posible. Por ejemplo, si realiza el mismo código que la transacción anterior, la fecha y la hora actuales aumentarán después de pg_sleep durante 2 segundos.

Entonces, esperamos que este tutorial lo haya ayudado a aprender las múltiples funciones que ayudan con la función NOW() y cómo ejecutarlas.

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 Date