获取昨天的开始和结束日期戳并转换为 Unix 纪元
Get yesterday start and end datestamp and convert to Unix epoch
我有一个存储过程,它会在一段时间内(凌晨 2 点到 3 点)运行,但在此期间并不总是在完全相同的时间。
作为此过程的一部分,我需要执行 3 个步骤:
1:获取昨天日期的开始
所以如果今天是 13/08/2020 13:51:02 我需要查询到 return 12/08/2020 00:00:00 并动态执行此操作
2:获取昨天日期的结束
在上面这将 return 12/08/2020 23:59:59
3: 将两个值都转换为 Unix EPOCH 时间戳
我过去曾在类似的问题上使用过下面的代码:
declare @yesterday date
set @yesterday = (SELECT convert(datetime, DATEADD(day, -1 ,getdate()), 23 ))
这里的问题是,这给出了一个恰好是过去 24 小时的值,因此如果 SP 在 2:15 是 运行 am - 它的时间戳将在 运行 上午 2:23 或 2:53 上午。
一旦我找到了使开始日期和结束日期始终正确的方法 - 然后我将使用类似 this 的解决方案将 Datetime 转换为 Epoch 时间戳,除非有人回答这个问题问题有一个时髦的方法来完成所有的事情(对此我将永远感激)
要获得昨天的午夜,请执行以下操作:
DECLARE @yesterday DATETIME
= DATEADD(DAY, -1, CAST(GETDATE() AS DATE));
今天午夜做
DECLARE @today DATETIME = CAST(GETDATE() AS DATE);
要过滤昨天发生的时间,请执行
WHERE ts >= @yesterday AND ts < @today ...
CAST 操作将 GETDATE() 返回的 date/time 值截断为午夜。
>=
和 <
的 WHERE 形式正确地处理了边界情况。它还恰好利用了我称为 ts
.
的列上的索引
我有一个存储过程,它会在一段时间内(凌晨 2 点到 3 点)运行,但在此期间并不总是在完全相同的时间。
作为此过程的一部分,我需要执行 3 个步骤:
1:获取昨天日期的开始
所以如果今天是 13/08/2020 13:51:02 我需要查询到 return 12/08/2020 00:00:00 并动态执行此操作
2:获取昨天日期的结束
在上面这将 return 12/08/2020 23:59:59
3: 将两个值都转换为 Unix EPOCH 时间戳
我过去曾在类似的问题上使用过下面的代码:
declare @yesterday date
set @yesterday = (SELECT convert(datetime, DATEADD(day, -1 ,getdate()), 23 ))
这里的问题是,这给出了一个恰好是过去 24 小时的值,因此如果 SP 在 2:15 是 运行 am - 它的时间戳将在 运行 上午 2:23 或 2:53 上午。
一旦我找到了使开始日期和结束日期始终正确的方法 - 然后我将使用类似 this 的解决方案将 Datetime 转换为 Epoch 时间戳,除非有人回答这个问题问题有一个时髦的方法来完成所有的事情(对此我将永远感激)
要获得昨天的午夜,请执行以下操作:
DECLARE @yesterday DATETIME
= DATEADD(DAY, -1, CAST(GETDATE() AS DATE));
今天午夜做
DECLARE @today DATETIME = CAST(GETDATE() AS DATE);
要过滤昨天发生的时间,请执行
WHERE ts >= @yesterday AND ts < @today ...
CAST 操作将 GETDATE() 返回的 date/time 值截断为午夜。
>=
和 <
的 WHERE 形式正确地处理了边界情况。它还恰好利用了我称为 ts
.