我希望创建一个Case语句,以便, 如果当前时间早于上午11点,我想要昨天和今天的信息 如果时间是在上午11点之后,我只想要今天的信息。
这就是我现在所拥有的
FROM [EDC].[dbo].[DIM_DefectData] with (NoLock)
Where
Case
When datepart(hh, GetDate()) < 11 then
[InitiateDt] > DATEADD(day, DATEDIFF(day, 0, GETDATE()),-1)
Else
[InitiateDt] > DATEADD(day, DATEDIFF(day, 0, GETDATE()),0)
End
......(其他要求正在发挥作用)
答案 0 :(得分:0)
如果我正确理解您的问题,您需要以下内容:
FROM [EDC].[dbo].[DIM_DefectData] WITH (NOLOCK)
WHERE [InitiateDt] > (
CASE
WHEN DATEPART(HH, GETDATE()) < 11
THEN DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), -1)
ELSE DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
END )
我将[InitiateDt]
放在WHERE
子句附近。
答案 1 :(得分:0)
试试这个
select * from yourTable
where [InitiateDt] > Case When datepart(hh,getdate()) <11
Then dateadd(day,datediff(day,0,getdate()),-1)
Else dateadd(day,datediff(day,0,getdate()),0)
END
答案 2 :(得分:0)
试试这个:
DECLARE @t table(d datetime)
insert @t values
('2016-08-30 09:00'),
('2016-08-30 10:00'),
('2016-08-31 10:00'),
('2016-08-30 11:00'),
('2016-08-30 11:08')
if(DATEPART(HH, GETDATE()) < 11)
SELECT CAST(d AS TIME) FROM @t
WHERE CAST(d AS TIME) <= CAST('11:00' AS TIME)
ELSE
SELECT CAST(d AS TIME) FROM @t
WHERE CAST(d AS TIME) > CAST('11:00' AS TIME)
上述内容在昨天上午11:00之前返回所有今天的数据。