sql-server - 使用变量 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
不正确的。
我在这里想念什么?
解决方案
为您的数据使用明确的格式,您将获得一致的结果。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')
推荐阅读
- r - 如何修复 mcode 的“模型构建步骤失败”错误(在“mrgsolve”包下)?警告消息“'make' not found”是什么意思?
- python - 如何以交互式图形的形式保存 matplotlib 3d 绘图的输出?
- javascript - 通过节点显示 javascript 对象的格式
- java - 编译器没有识别出我已经从它实现的接口实现了 compareTo() 方法
- python - 从文本文件中解析电子邮件信息
- exoplayer - 如何在 ExoPlayer for AndroidTV 中实现视频清理?
- assembly - 汇编和标准输出中的 fprintf
- angular - Angular 6使用takeUntil防止组件中的多个Observable内存泄漏
- c# - 像电开关这样的设计模式?
- reactjs - React-bootstrap Carousels 垂直渲染