Problema:
Le gustaría obtener la fecha y hora actual con información de zona horaria de una base de datos de PostgreSQL.
Solución:
Usaremos CURRENT_TIMESTAMP o NOW() para obtener la fecha y la hora actuales con el desplazamiento de la zona horaria.
SELECT CURRENT_TIMESTAMP ;
Este es el resultado de la consulta:
2019-09-15 13:13:12.118432+02
Discusión:
CURRENT_TIMESTAMP
devuelve la fecha, la hora y la zona horaria actuales (utilizando la fecha, la hora y la zona horaria de la máquina en la que se ejecuta PostgreSQL). Esto se devuelve como un valor en 'YYYY-MM-DD hh:mm:ss.nnnnnn+/-tz' formato. En este formato:
- AAAA es un año de 4 dígitos.
- MM es un mes de 2 dígitos.
- DD es un día del mes de 2 dígitos.
- hh es una hora de 2 dígitos.
- mm es un minuto de 2 dígitos.
- ss es un segundo de 2 dígitos.
- nnnnnn define el número de fracciones de segundo (es decir, la precisión) de 0 a 6.
- +tz o -tz es el desplazamiento de la zona horaria, ya sea más o menos de UTC.
Como notará, esta función no tiene paréntesis. Sin embargo, si desea mostrar una fecha y hora con una precisión específica, puede usar el argumento entero opcional. Devuelve una fecha y hora con fracciones de segundo y el desplazamiento de la zona horaria. Este argumento debe estar en el rango de 0 a 6; 0 no es ninguna fracción de segundo, 1 es una fracción de segundo (por ejemplo, un lugar detrás del decimal), etc. Mira el siguiente ejemplo:
SELECT CURRENT_TIMESTAMP(3) ;
Este es el resultado de la consulta:
2019-09-15 13:01:51.142+02
Este resultado contiene una fracción de segundo de 3 dígitos porque colocamos 3 como argumento en la función CURRENT_TIMESTAMP. El desplazamiento de la zona horaria aún aparece al final.
El tiempo devuelto por esta función no cambia durante las transacciones o una sola consulta. Siempre es el momento en que comenzó la transacción.
NOW() es similar a CURRENT_TIMESTAMP
función y devuelve el mismo resultado. La diferencia es que CURRENT_TIMESTAMP
es la función estándar de SQL, mientras que NOW() es específica de PostgreSQL.
SELECT NOW() ;
Este es el resultado de la consulta:
2019-08-27 12:18:55.324145+02
Tenga en cuenta que la función NOW() requiere corchetes. Sin embargo, puede dejarlos vacíos y obtener el valor predeterminado.
CURRENT_TIMESTAMP y NOW() devuelven el timestamptz tipo de datos.