我们有一项业务规则,一天的执行时间是凌晨5点至凌晨5点。这意味着在我们的数据库中,如果我们在'2019-01-05 02:00:00'发生一笔交易,则该交易具有'PeriodDate'或2019-01-04。
我试图制作一个视图,该视图在一天之内获得一笔SaleAmount的总和,但是目前,我只是使用以下代码获取标准的凌晨12点至凌晨12点。
select Convert(date, dbo.Sales.[Time Stamp]) as PeriodDate, sum(Sales.[SalesAmount]) as SalesAmount, siteid from sales
group by Convert(date, dbo.Sales.[Time Stamp]), siteid
在正确的PeriodDate(凌晨5点-凌晨5点)进行分组销售时,我需要做什么。
n.b。时间戳列是DateTime列,这就是为什么我最初将其转换为Date的原因。
答案 0 :(得分:3)
您可以从[Time Stamp]
中减去5个小时,然后在分组之前转换为date
:
select
convert(date, dateadd(hour, -5, [Time Stamp])) as PeriodDate,
sum([SalesAmount]) as SalesAmount,
siteid
from sales
group by
convert(date, dateadd(hour, -5, [Time Stamp])),
siteid