sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo obtener la fecha y hora actuales con la compensación de zona horaria en PostgreSQL

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.