En SQL Server, puede usar SET DATEFIRST
para establecer el primer día de la semana.
El primer día de la semana puede ser diferente, según el idioma que se utilice. Por ejemplo, el valor predeterminado para us_English es 7 (domingo), mientras que el valor predeterminado para Deutsch (alemán) es 1 (lunes).
Este artículo muestra cómo cambiar el primer día de la semana sin cambiar el idioma.
Sintaxis
Primero, la sintaxis es así:
SET DATEFIRST { number | @number_var }
Donde number | @number_var
es un número entero que indica el primer día de la semana. Este es un número entre 1 y 7.
La siguiente tabla muestra el mapeo entre el número y el día de la semana.
Valor | El primer día de la semana es |
---|---|
1 | lunes |
2 | martes |
3 | miércoles |
4 | jueves |
5 | viernes |
6 | sábado |
7 | domingo |
Entonces, un valor de, digamos, 3
, establecería el miércoles como el primer día de la semana.
Ejemplo 1:uso básico
Aquí hay un ejemplo para demostrar la sintaxis.
SET DATEFIRST 1;
Esto establece el primer día de la semana en lunes (podemos ver en el gráfico anterior que un valor de 1
mapas hasta el lunes).
Podemos ver la configuración actual usando @@DATEFIRST
para devolver el valor actual de SET DATEFIRST
.
SELECT @@DATEFIRST AS 'Result';
Resultado:
+----------+ | Result | |----------| | 1 | +----------+
Ejemplo 2:anular la configuración de idioma
Este ejemplo demuestra cómo SET DATEFIRST
la configuración encaja con la configuración de idioma.
SET LANGUAGE us_english; SELECT @@LANGUAGE AS 'LANGUAGE Before', @@DATEFIRST AS 'DATEFIRST Before'; SET DATEFIRST 1; SELECT @@LANGUAGE AS 'LANGUAGE After', @@DATEFIRST AS 'DATEFIRST After';
Resultado:
+-------------------+--------------------+ | LANGUAGE Before | DATEFIRST Before | |-------------------+--------------------| | us_english | 7 | +-------------------+--------------------+ Changed language setting to us_english. +------------------+-------------------+ | LANGUAGE After | DATEFIRST After | |------------------+-------------------| | us_english | 1 | +------------------+-------------------+
Entonces podemos ver que el idioma sigue siendo el mismo, pero el primer día de la semana ha cambiado.
Este ejemplo usa SET LANGUAGE
para configurar el idioma de la sesión actual (que, como se mencionó, se usa para determinar el primer día de la semana). La configuración de idioma también establece implícitamente el formato de fecha. Si es necesario, puede usar SET DATEFORMAT
para anular esta configuración para el formato de fecha.
Para ver qué DATEFIRST
la configuración se asigna a cada idioma, aquí hay una lista de todos los idiomas y formatos de fecha asociados en SQL Server 2017.
También puede usar el sp_helplanguage
procedimiento almacenado para devolver esa lista. Para ello, consulte Cómo encontrar los formatos de fecha utilizados para un idioma específico en SQL Server (T-SQL).