Tema SQL
AT TIME ZONE (SQL Server)
Convierte entre datetimeoffset y hora local según zona IANA o Windows, o interpreta datetime sin zona en una zona dada. Clave para datos globales en T-SQL.
Descripción
expresión AT TIME ZONE seguida del nombre de zona cambia el tipo u offset según reglas de Windows o registro de zonas (según versión). Encadenar dos AT TIME ZONE para pasar de local a UTC y viceversa. Requiere columnas datetimeoffset para conservar offset. Vigila cambios de DST. PostgreSQL AT TIME ZONE con distinto comportamiento; MySQL CONVERT_TZ con tabla time_zone.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
datetimeoffset_expr AT TIME ZONE 'Central European Standard Time'
-- o cadena interpretada como zona
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Tipos
- Combinar datetime2 sin zona con AT TIME ZONE produce offset explícito.
- Lista de zonas
- sys.time_zone_info en versiones recientes.
Ejemplos
Ejemplo 1
SELECT CAST('2026-07-15 12:00:00' AS datetime2)
AT TIME ZONE 'Central European Standard Time'
AT TIME ZONE 'UTC' AS utc_instant;
SELECT SYSUTCDATETIME() AT TIME ZONE 'W. Europe Standard Time' AS local_srv;
Ejemplo 2
SELECT SYSUTCDATETIME() AT TIME ZONE 'UTC' AT TIME ZONE 'Central European Standard Time' AS local_ce;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.