SET ZONA HORARIA (Transact-SQL)

Aplica a:Azure SQL DatabaseBase de datos SQL en Microsoft Fabric

La SET TIME ZONE sentencia Transact-SQL (T-SQL) se utiliza para establecer un valor de zona horaria en Azure SQL Database y una base de datos SQL en Microsoft Fabric.

Note

SET TIME ZONEno es compatible con SQL Server ni en Azure SQL Managed Instance.

SET TIME ZONE anula el valor de la zona horaria a nivel de base de datos o instancia. El valor de la zona horaria es el mismo que la name columna en la vista del sistema sys.time_zone_info .

Convenciones de sintaxis de Transact-SQL

Syntax

SET TIME ZONE { 'time_zone_value' | 'LOCAL' }
[ ; ]

Argumentos

{ 'time_zone_value' | 'LOCAL' }

Especifica el valor del husto horario. time_zone_value es nvarchar(128), con un valor por defecto de LOCAL.

Si LOCAL se especifica, entonces el valor actual predeterminado de la zona horaria de la sesión se establece al valor original de la zona, que puede ser una opción con alcance de base de datos o la instancia predeterminada.

Una lista de husos horarios instalados se muestra a través de la vista del sistema sys.time_zone_info .

Remarks

Si SET TIME ZONE se utiliza en un módulo T-SQL o en un lote SQL dinámico, entonces el cambio solo se aplica al alcance de ejecución del módulo o del lote SQL dinámico. Una vez que se completa la ejecución por lotes de módulo o SQL dinámico, la configuración de zona horaria de la sesión vuelve al valor de la zona horaria vigente antes de la ejecución del módulo o del lote SQL dinámico.

Permissions

Requiere la pertenencia al rol fijo de base de datos público .

Examples

Los ejemplos de código de este artículo usan la base de datos de ejemplo AdventureWorks2025 o AdventureWorksDW2025, que puedes descargar del repositorio de GitHub Azure Data SQL Samples Repository.

R. Consulta la configuración actual de la zona horaria

La siguiente consulta devuelve el nombre del servidor, el nombre de la base de datos y la versión del producto.

SELECT @@servername AS ServerName,
       DB_NAME() AS DatabaseName,
       SERVERPROPERTY('ResourceVersion') AS ProductVersion;

La siguiente consulta enumera las zonas horarias válidas, ordenadas por su desplazamiento UTC.

SELECT *
FROM sys.time_zone_info
ORDER BY current_utc_offset;

La siguiente consulta verifica el valor actual de la TIME_ZONE configuración con alcance de la base de datos.

SELECT *
FROM sys.database_scoped_configurations
WHERE name = 'TIME_ZONE';

Si la zona horaria no está configurada a nivel de base de datos, por defecto se asigna a la zona horaria de la instancia. La configuración del husto horario de la instancia depende de la plataforma:

Plataforma Descripción
Windows La zona horaria del sistema operativo subyacente.
Linux La zona horaria del proceso de SQL Server, que puedes configurar usando la TZ variable de entorno.
Azure SQL Database La zona horaria de la instancia SQL, que siempre es UTC y hoy no se puede cambiar.
Instancia Gestionada de Azure SQL La zona horaria de la instancia SQL, que por defecto es UTC y que solo puede modificarse en el momento de la creación de la instancia hoy en día.

B. Establece la zona horaria a nivel de base de datos

El siguiente ejemplo establece la zona horaria con alcance de la base de datos a la hora estándar de Nueva Zelanda y luego revisa las funciones afectadas.

ALTER DATABASE SCOPED CONFIGURATION SET TIME_ZONE = 'New Zealand Standard Time';
GO

SELECT CURRENT_TIMEZONE() AS CurrentTimeZone,
       CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
       SYSDATETIMEOFFSET() AS CurrentDateTimeOffset,
       SYSDATETIME() AS CurrentLocalDateTime2,
       GETDATE() AS CurrentLocalDateTime3,
       CURRENT_TIMESTAMP AS CurrentLocalDateTime4;

C. Restablecer la zona horaria con alcance de base de datos al valor predeterminado

El siguiente ejemplo establece la zona horaria con alcance de la base de datos a LOCAL, y luego revisa las funciones afectadas.

ALTER DATABASE SCOPED CONFIGURATION SET TIME_ZONE = LOCAL;
GO

SELECT CURRENT_TIMEZONE() AS CurrentTimeZone,
       CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
       SYSDATETIMEOFFSET() AS CurrentDateTimeOffset,
       SYSDATETIME() AS CurrentLocalDateTime2,
       GETDATE() AS CurrentLocalDateTime,
       CURRENT_TIMESTAMP AS CurrentLocalDateTime2;

D. Establece la zona horaria a nivel de sesión

El siguiente ejemplo establece la zona horaria de la sesión a la hora estándar del Pacífico y luego a la hora estándar de la India, revisando las funciones afectadas tras cada cambio.

SET TIME ZONE 'Pacific Standard Time';

SELECT CURRENT_TIMEZONE() AS CurrentTimeZone, CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
       SYSDATETIMEOFFSET() AS CurrentDateTimeOffset, SYSDATETIME() AS CurrentLocalDateTime2,
       GETDATE() AS CurrentLocalDateTime3, CURRENT_TIMESTAMP AS CurrentLocalDateTime4;
GO

SET TIME ZONE 'India Standard Time';

SELECT CURRENT_TIMEZONE() AS CurrentTimeZone, CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
       SYSDATETIMEOFFSET() AS CurrentDateTimeOffset, SYSDATETIME() AS CurrentLocalDateTime2,
       GETDATE() AS CurrentLocalDateTime3, CURRENT_TIMESTAMP AS CurrentLocalDateTime4;

E. Restablece la zona horaria de la sesión al valor predeterminado

El siguiente ejemplo reinicia la sesión a la zona horaria predeterminada de la instancia o plataforma.

SET TIME ZONE local;
GO

SELECT CURRENT_TIMEZONE() AS CurrentTimeZone,
       CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
       SYSDATETIMEOFFSET() AS CurrentDateTimeOffset,
       SYSDATETIME() AS CurrentLocalDateTime2,
       GETDATE() AS CurrentLocalDateTime3,
       CURRENT_TIMESTAMP AS CurrentLocalDateTime4;

F. Las vistas del sistema siempre devuelven la zona horaria de la instancia

Las vistas del sistema que incluyen valores de tiempo siempre devuelven la zona horaria de la instancia, independientemente de la zona horaria de la sesión o de la base de datos.

SELECT *
FROM sys.dm_exec_sessions;

SELECT *
FROM sys.dm_exec_query_stats;

SELECT *
FROM sys.objects;