sql - datepart 函数不考虑更新日期
问题描述
该datepart
函数与参数一起应用时week
,也会显示更新行的结果,即使日期不在给定周的范围内:
select INSTALLATION_DATE
from {MyTABLE}
where datepart(WEEK, INSTALLATION_DATE) = 24
结果:
2022-06-05 10:11:48.0000000
2022-06-05 06:11:48.0000000
2021-06-08 10:29:41.0000000
2021-06-08 10:36:53.0000000
2021-06-08 10:37:52.0000000
2021-06-08 10:39:24.0000000
2021-06-08 10:40:03.0000000
2021-06-07 10:43:11.0000000
2021-06-09 10:43:54.0000000
前两行已更新为未来日期,但仍显示为第 24 周(2021-06-06
至2021-06-12
)
解决方案
似乎没有什么不妥。由于每年有第 24 周,因此您还将获得 2022 年的结果。
week
of的datepart
最大值为 53,然后在下一年从 1 开始:
select datepart(week, '2021-06-08') -- 24
select datepart(week, '2022-01-01') -- 1
select datepart(week, '2022-06-05') -- 24
如果您想将其限制为一年,则必须相应地指定它,例如
select INSTALLATION_DATE
from {MyTABLE}
where datepart(week,INSTALLATION_DATE)=24
and datepart(year,INSTALLATION_DATE)=2021
推荐阅读
- reactjs - useSpring Hook 返回“您尝试设置 lastVelocity”,值为 0 错误
- python - 如何在脚本中使用全局导入的包
- git - 如何对 master 进行修改并放在所有分支上
- android - 点击最顶部视图的操作
- objective-c - shouldPerformSegueWithIdentifier 总是先执行
- sql - Redshift 不支持相关子查询
- html - 无法在网页-VBA 上选择的元素
- c# - 不使用 shift 将数组向左旋转
- c# - 我无法让消息框在 C# 代码中工作
- php - 为每个集合创建集合存在于 laravel 集合的关系属性中