在午夜之后获取DateTime的期间日期-SQL

时间:2019-03-14 20:24:04

标签: sql datetime

我们有一项业务规则,一天的执行时间是凌晨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的原因。

1 个答案:

答案 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