Convertir zona horaria en PostgreSQL Server
- Convertir zona horaria en PostgreSQL Server
-
la función
timezone()
y sus usos para convertir la zona horaria - Use consultas SQL para convertir valores de marca de tiempo a diferentes zonas horarias
- Declaraciones SQL importantes para convertir la zona horaria
¿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:
- Uso de la función
timezone()
- 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:
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:
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:
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:
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:
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:
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:
Nota: La función
timezone()
se puede utilizar con numerosos argumentos. Intente usar la funcióntimezone()
con los argumentoslocaltimestamp
ocurrent_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:
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:
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:
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.
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