Convertir zona horaria en PostgreSQL Server

Bilal Shahid 15 febrero 2024
  1. Convertir zona horaria en PostgreSQL Server
  2. la función timezone() y sus usos para convertir la zona horaria
  3. Use consultas SQL para convertir valores de marca de tiempo a diferentes zonas horarias
  4. Declaraciones SQL importantes para convertir la zona horaria
Convertir zona horaria en PostgreSQL Server

¿Le gustaría convertir los valores de marca de tiempo almacenados en su tabla a una zona horaria diferente en PostgreSQL? Este artículo describe un procedimiento para convertir los valores de marca de tiempo almacenados a una zona horaria diferente.

Convertir zona horaria en PostgreSQL Server

Hay diferentes formas de convertir un valor de marca de tiempo a otra zona horaria. Hay dos formas que discutiremos en este artículo:

  1. Uso de la función timezone()
  2. Uso de las consultas SQL

Podemos seguir cualquiera de ellos para convertir las marcas de tiempo de una zona horaria a otra.

la función timezone() y sus usos para convertir la zona horaria

El servidor PostgreSQL ofrece numerosas funciones de usuario que lo ayudan a realizar tareas de manera rápida y eficiente. Sin embargo, antes de usar la función timezone(), analicémoslo en detalle.

La función timezone() se utiliza para convertir un valor de marca de tiempo en otra zona horaria. La sintaxis de la función timezone() es la siguiente:

timezone(zone, timestamp)

Como se muestra arriba, la función timezone() toma dos argumentos. El primer argumento, zona, representa la zona horaria en la que desea convertir el argumento de marca de tiempo.

El segundo argumento, marca de tiempo, representa el valor de la marca de tiempo que desea convertir a una zona horaria diferente.

El valor de retorno de la función timezone() varía según el valor de la marca de tiempo. La función devolverá un valor diferente si el valor de la marca de tiempo original incluye una zona horaria.

Por otro lado, el valor devuelto será diferente si el valor de la marca de tiempo NO tiene una zona horaria. Entendámoslo con ejemplos de código a continuación.

Códigos de ejemplo que contienen marca de tiempo con zona horaria

Los ejemplos de esta sección utilizan la función timezone(), donde el argumento de marca de tiempo incluye la zona horaria. Aquí hay una declaración SQL en PostgreSQL:

SELECT timezone('PST', timestamp with time zone '2020-10-25 00:00:00+00');

La función timezone() convierte el valor de marca de tiempo proporcionado en el segundo argumento a la zona horaria especificada en el primer argumento.

El valor devuelto es sin una zona horaria. Por lo tanto, el resultado de la consulta mencionada anteriormente es el siguiente:

convertir la zona horaria en el servidor postgresql - imagen uno

Este ejemplo cambia la zona horaria del valor de marca de tiempo de entrada:

SELECT timezone('PST', timestamp with time zone '2020-10-25 00:00:00+01');

Producción:

convertir la zona horaria en el servidor postgresql - imagen dos

Supongamos que usa la función timezone() con el argumento "timestamp with timezone" y no especifica la zona horaria con la marca de tiempo. Luego, la marca de tiempo original en el argumento se convertirá a una zona horaria local.

SELECT timezone('PST', timestamp with time zone '2020-10-25 00:00:00');

Producción:

convertir la zona horaria en el servidor postgresql - imagen tres

Podemos ver que la marca de tiempo devuelta es 11 horas por delante, lo que significa que mi zona horaria local está 11 horas por detrás de la zona horaria PST.

Si desea ver el desplazamiento de la zona horaria que se ha utilizado, ejecute la siguiente consulta:

SELECT timestamp with time zone '2020-10-25 00:00:00';

Producción:

convertir la zona horaria en el servidor postgresql - imagen cuatro

Códigos de ejemplo que contienen marca de tiempo sin zona horaria

Podemos ejecutar los mismos ejemplos con el argumento "timestamp without timezone". El resultado convierte la marca de tiempo original utilizando la configuración de zona horaria actual, incluso si la marca de tiempo incluye un desplazamiento de zona horaria.

El valor de retorno de la función contiene un desplazamiento de zona horaria adjunto. Aquí hay una consulta en PostgreSQL que no incluye un desplazamiento de zona horaria:

SELECT timezone('PST', timestamp without time zone '2020-10-25 00:00:00+00');

Por lo tanto, el resultado de la consulta mencionada anteriormente es el siguiente:

convertir la zona horaria en el servidor postgresql - imagen cinco

El siguiente ejemplo incluye un desplazamiento de zona horaria:

SELECT timezone('PST', timestamp without time zone '2020-10-25 00:00:00+12');

El resultado de la consulta anterior es el mismo que el obtenido sin una compensación de zona horaria:

convertir la zona horaria en el servidor postgresql - imagen cinco

Para comprender el concepto del argumento "marca de tiempo sin zona horaria", consulta la siguiente consulta:

SELECT timestamp without time zone '2020-10-25 00:00:00+12';

Producción:

convertir la zona horaria en el servidor postgresql - imagen seis

Nota: La función timezone() se puede utilizar con numerosos argumentos. Intente usar la función timezone() con los argumentos localtimestamp o current_timestamp. El argumento “marca de tiempo con/sin zona horaria” también se puede utilizar con valores de tiempo: “hora con/sin zona horaria”.

Use consultas SQL para convertir valores de marca de tiempo a diferentes zonas horarias

Aquí, discutimos algunas declaraciones SQL que podemos ejecutar en PostgreSQL para convertir los valores de la marca de tiempo a otra zona horaria sin una función.

La primera consulta selecciona una marca de tiempo y una zona horaria. La conversión usando una instrucción SQL se muestra a continuación:

SELECT (timestamp'2020-10-25 00:00:00') AT TIME ZONE 'PST';

Producción:

convertir la zona horaria en el servidor postgresql - imagen siete

Nota: Puede ejecutar las consultas con cualquiera de las zonas horarias requeridas. Para simplificar, la zona horaria utilizada en todo el artículo es PST.

Aquí hay una consulta generalizada para convertir valores de marca de tiempo a otra zona horaria:

SELECT ((stored_timestamp AT TIME ZONE 'UTC') AT TIME ZONE 'PST') AS local_timestamp FROM my_table;

Para explicar la consulta en palabras más simples, puede elegir un atributo stored_timestamp de una tabla llamada my_table en PostgreSQL.

La zona horaria stored_timestamp se proporciona junto a ella, y la siguiente zona horaria representa la zona horaria en la que desea convertir la marca de tiempo. El resultado se llamará local_timestamp.

Otra instrucción que convierte un valor de marca de tiempo en una zona horaria diferente es la siguiente:

SELECT '2020-10-25 00:00:00'::timestamp AT time zone 'PST';

Produce el mismo resultado que la consulta 1:

convertir la zona horaria en el servidor postgresql - imagen siete

La siguiente consulta es una alternativa a las consultas mencionadas anteriormente. Si no está seguro de su zona horaria, puede convertir la marca de tiempo a esa zona horaria usando un intervalo de zona.

Nota: La consulta a continuación no representa el intervalo de zona de PST.

SELECT '2020-10-25 00:00:00' :: timestamp AT time zone INTERVAL'+08:30';

La marca de tiempo recibida para el intervalo de zona "+08:30" es la siguiente:

convertir la zona horaria en el servidor postgresql - imagen ocho

Declaraciones SQL importantes para convertir la zona horaria

Para ayudarlo a convertir un valor de marca de tiempo en un valor de zona horaria diferente, aquí hay dos declaraciones SQL esenciales que puede usar en PostgreSQL.

La siguiente declaración devuelve su zona horaria actual. Por lo tanto, si no está seguro de su zona horaria, ejecute esta declaración:

SHOW timezone;

Si está interesado en echar un vistazo a las diferentes zonas horarias que admite el servidor PostgreSQL, use la siguiente declaración:

SELECT * FROM pg_timezone_names;

Por lo tanto, convertir un valor de marca de tiempo a otra zona horaria no es una tarea difícil. Las declaraciones SQL simples en PostgreSQL pueden ayudarlo a transformar el valor de la marca de tiempo en una zona horaria de su elección.

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