假设我有一个时间戳,并且我想将此时间戳截断为时间戳所在的一周中的周日开始的几分钟。在标准SQL中,我将执行以下操作:
timestamp_diff(created_at, timestamp_trunc(created_at, week), minute)
其中creared_at
将是我拥有的时间戳,而week
将是truncate函数将其截断到一周所需的参数。在Azure中怎么办?
答案 0 :(得分:1)
我将以“时间戳”表示日期时间值的假设来回答这个问题。 Sql Server(和Azure)中的实际时间戳数据类型是rowversion数据类型的已弃用同义词,与实际日期或时间无关。
如果要处理日期时间值,则以下内容将为您提供@timestamp_to_truncate
到上一个星期日凌晨12点之间的分钟数:
declare @timestamp_to_truncate datetime = getdate()
declare @sunday datetime = cast(dateadd(day,1-DATEPART(dw, @timestamp_to_truncate),cast(@timestamp_to_truncate as date)) as datetime)
select datediff(mi,@sunday,@timestamp_to_truncate)