首页 > 解决方案 > 使用变量 vs varchar 在 datepart 中产生不同的结果

问题描述

这个查询:

SET datefirst 7
DECLARE @data datetime = '2020-01-03 00:00:00.000'

SELECT DATEPART(WEEK, @data)

退货1(这是正确的)

但是,此查询:

SET datefirst 7

SELECT DATEPART(WEEK, '2020-01-03 00:00:00.000')

返回2不正确的。

我在这里想念什么?

标签: sql-server

解决方案


为您的数据使用明确的格式,您将获得一致的结果。yyyy-MM-dd hh:mm:ss.mmm在 SQL Server 中不是明确的,只是yyyy-MM-ddThh:mm:ss(.nnnnnnn)yyyyMMdd数据类型和语言无关。

以下为两者返回 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')

DB<>小提琴


推荐阅读