sql >> Base de Datos >  >> RDS >> Sqlserver

ESTABLECER FECHA PRIMERO:establezca el primer día de la semana en SQL Server

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).