问题描述
在SAP B1中,我想对当前时间之前3小时创建的数据进行计数。
我已经有了这个逻辑
SELECT COUNT(*)
FROM OIVL T0
WHERE T0.CreateDate >= DATEADD(hour,-12,GETDATE())
但是问题是CreateDate
列仅包含日期,而没有时间。
有时间但是在smallint
解决方法
鉴于注释中有关SAP B1如何编码CreateTime的讨论,您将需要计算每行的datetime值,以将其与当前时间进行比较,例如:
create table #Example (
CreateDate date,CreateTime smallint
);
insert #Example (CreateDate,CreateTime) values ('2020-08-30',2324);
select
CreateDate,CreateTime,CreateDateTime --2020-08-30 23:24:00.000
from #Example
outer apply (
select dateadd(mi,(CreateTime/100)*60+CreateTime%100,cast(CreateDate as datetime)) as CreateDateTime
) Calc
where CreateDateTime >= dateadd(hour,-12,getdate());