Sql server 使用变量vs varchar在datepart中产生不同的结果
此查询:Sql server 使用变量vs varchar在datepart中产生不同的结果,sql-server,Sql Server,此查询: SET datefirst 7 DECLARE @data datetime = '2020-01-03 00:00:00.000' SELECT DATEPART(WEEK, @data) SET datefirst 7 SELECT DATEPART(WEEK, '2020-01-03 00:00:00.000') 返回1(正确) 但是,此查询: SET datefirst 7 DECLARE @data datetime = '2020-01-03 00:00:00.00
SET datefirst 7
DECLARE @data datetime = '2020-01-03 00:00:00.000'
SELECT DATEPART(WEEK, @data)
SET datefirst 7
SELECT DATEPART(WEEK, '2020-01-03 00:00:00.000')
返回1
(正确)
但是,此查询:
SET datefirst 7
DECLARE @data datetime = '2020-01-03 00:00:00.000'
SELECT DATEPART(WEEK, @data)
SET datefirst 7
SELECT DATEPART(WEEK, '2020-01-03 00:00:00.000')
返回不正确的2
我在这里遗漏了什么?对数据使用明确的格式,您会得到一致的结果
yyyy-MM-dd-hh:MM:ss.mmm在SQL Server中不是明确的,只有yyy-MM-ddThh:MM:ss(.nnnnnnn)
和yyyyymmdd
与数据类型和语言无关
以下两种方法都返回1:
set datefirst 7
DECLARE @data datetime = '2020-01-03T00:00:00.000'
select DATEPART(week,@data)
GO
set datefirst 7
select DATEPART(week,'2020-01-03T00:00:00.000')