sql-server - 这个声明的结果是什么?
问题描述
我正在编写一个准备好的语句,并遇到了一些有趣的日期操作代码。因为我正在重写,所以我正确理解它是至关重要的。
我直接用谷歌搜索了代码并在 SO 上找到了类似的东西,但它与代码不完全匹配(我知道,它从来不是 :-) 我只需要验证我将它解释为只返回第二天的分钟秒数?
DECLARE @dEnd DATE = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dIncr)+1,0))
我把它放在一个条件语句中,将它与以下内容进行比较:
DECLARE @dIncr DATE = CAST(@Month as varchar(2)) + '/01/' + CAST(@Year as varchar(4))
编辑然后在此条件语句中使用游标运行变量:
WHILE ( @dIncr <= @dEnd )
BEGIN
--Random code
END
编辑 2 SQL Server v:
Microsoft SQL Azure (RTM) - 12.0.2000.8
Nov 20 2018 21:01:54
Copyright (C) 2018 Microsoft Corporation
提前感谢您提供的任何帮助!
解决方案
DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dIncr)+1,0))
这将获取当前月份的最后一天的日期@dIncr
打破这个:
DATEDIFF(m,0,@dIncr)+1
@dIncr
说:返回自 1900 年 1 月 1 日 sql 日期纪元以来变量中日期的月数 + 1 (这是0
函数中的)
DATEADD(mm, DATEDIFF(m,0,@dIncr)+1,0)
说:返回通过将先前计算的月数添加到 sql 日期纪元 1900 年 1 月 1 日来表示的日期
DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dIncr)+1,0))
说:从那个日期减去一秒。
推荐阅读
- java - Java / SceneBuilder中的乘法字段
- vue.js - Vuejs:来自 Django API 的数据可视化平台
- python - 将 Pandas 数据框转换为以第一列为键的字典
- selection - 如何在 Sublime text 4 中进行反转选择?
- flutter - Flutter 2.0 Navigator w/Provider 在弹出时给出空值错误
- flutter - Flutter如何从url获取pdf文件
- android - 在 val 之外获取字符串?
- python - 如何在python中为数据添加标点符号
- r - 如何锚定多条线的特定数据点,然后通过选定的点链接它们?
- javascript - 如何从 forEach 减少数组