SET DATEFIRST (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
将一周的第一天设置为从 1 到 7 的一个数字。
有关所有 Transact-SQL 日期和时间数据类型及函数的概述,请参阅日期和时间数据类型及函数 (Transact-SQL)。
语法
SQL Server 和 Azure SQL 数据库的语法
SET DATEFIRST { number | @number_var }
Azure Synapse Analytics 和并行数据仓库的语法
SET DATEFIRST 7 ;
参数
number | @number_var
指示一周的第一天的一个整数。 可以是下列值之一。
值 | 一周的第一天是 |
---|---|
1 |
星期一 |
2 |
星期二 |
3 |
星期三 |
4 |
星期四 |
5 |
星期五 |
6 |
星期六 |
7 (默认值,美国英语) |
星期日 |
注解
若要查看 SET DATEFIRST 的当前设置,请使用 @@DATEFIRST 函数。
SET DATEFIRST 的设置是在执行或运行时设置,而不是在分析时设置。
指定 SET DATEFIRST 对 DATEDIFF 不起作用。 DATEDIFF 始终使用星期日作为每周的第一天,以确保函数是确定性的。
与所有 SET 语句一样,SET DATEFIRST 会影响当前会话。
权限
要求 公共 角色具有成员身份。
示例
以下示例显示了某个日期值对应的一周中的一天,并显示了更改 DATEFIRST
设置的效果。
-- SET DATEFIRST to U.S. English default value of 7.
SET DATEFIRST 7;
SELECT CAST('1999-1-1' AS datetime2) AS SelectDate
,DATEPART(dw, '1999-1-1') AS DayOfWeek;
-- January 1, 1999 is a Friday. Because the U.S. English default
-- specifies Sunday as the first day of the week, DATEPART of 1999-1-1
-- (Friday) yields a value of 6, because Friday is the sixth day of the
-- week when you start with Sunday as day 1.
SET DATEFIRST 3;
-- Because Wednesday is now considered the first day of the week,
-- DATEPART now shows that 1999-1-1 (a Friday) is the third day of the
-- week. The following DATEPART function should return a value of 3.
SELECT CAST('1999-1-1' AS datetime2) AS SelectDate
,DATEPART(dw, '1999-1-1') AS DayOfWeek;
GO