此 SQL 声明的意图是什么?
What is the intent of this SQL statement?
我运行进入如下:
DECLARE @UpdateDtm datetime = DATEADD(dd, 0, DATEDIFF(dd, 0, DATEADD(minute, -10, GETDATE())))
SELECT @UpdateDtm
它returns今天的日期:2021-10-11 00:00:00.000
,但我不是很理解其中的逻辑。首先它从 GetDate
中减去 10 分钟,然后得到该时间与开始时间之间的天数差异。然后它将差异(再次以天为单位)添加到时间的开始。
据我所知,它可以简单地替换为 CAST(GETDATE() AS Date)
。我在这里遗漏了什么吗?
目的是获取午夜到 10 分钟前的日期。所以(大致)现在,2021-10-11T22:30:30
(UTC) 这将是 return 2021-10-11T00:00:00
。但是,如果它是 2021-10-11T00:07:30
它将 return 2021-10-10T00:00:00
.
为什么不只是 CAST
/CONVERT
约会,我不确定。也许它最初是在 2008 年之前写的?
SELECT CONVERT(date, DATEADD(minute,-10, GETDATE());
我运行进入如下:
DECLARE @UpdateDtm datetime = DATEADD(dd, 0, DATEDIFF(dd, 0, DATEADD(minute, -10, GETDATE())))
SELECT @UpdateDtm
它returns今天的日期:2021-10-11 00:00:00.000
,但我不是很理解其中的逻辑。首先它从 GetDate
中减去 10 分钟,然后得到该时间与开始时间之间的天数差异。然后它将差异(再次以天为单位)添加到时间的开始。
据我所知,它可以简单地替换为 CAST(GETDATE() AS Date)
。我在这里遗漏了什么吗?
目的是获取午夜到 10 分钟前的日期。所以(大致)现在,2021-10-11T22:30:30
(UTC) 这将是 return 2021-10-11T00:00:00
。但是,如果它是 2021-10-11T00:07:30
它将 return 2021-10-10T00:00:00
.
为什么不只是 CAST
/CONVERT
约会,我不确定。也许它最初是在 2008 年之前写的?
SELECT CONVERT(date, DATEADD(minute,-10, GETDATE());