我正在尝试这样做:
@EndDate
设置为昨天@EndDate
设置为昨天。 我尝试过几种不同的方法,包括下面的两种方法。我对编程很新,所以很可能我错过了一些相当简单的东西。基本上,我尝试有条件地设置@EndDate
,具体取决于@Day
设置的内容。
DECLARE @Day DATETIME
SET @Day = '09/2/17 12:50'
SET @Day = DATEADD(dd, DATEDIFF(dd, 0, @Day), 0)
DECLARE @Enddate DATETIME
SET @Enddate = CASE @Day
WHEN @Day < GETDATE() THEN GETDATE() - 1
END
--SET @Enddate = @Day
-- WHERE @Day < GETDATE()
--SET @Enddate = GETDATE()-1
-- WHERE@Day >= GETDATE()
谢谢
答案 0 :(得分:1)
为了澄清,变量@yesterday
在没有时间的情况下添加为DATE
Declare @Day datetime
Set @Day = '09/02/17 12:50'
SET @Day = DATEADD(dd, DATEDIFF(dd, 0, @Day), 0)
Declare @Enddate Datetime
Declare @yesterday as date
SET @yesterday=dateadd(day,-1,getdate())
Set @Enddate = Case
When @day< @yesterday Then @day else @yesterday End
任何比昨天更早的值保持不变,昨天的其他案例集
答案 1 :(得分:1)
您正在混合两种可能的方式来编写案例表达式......
您可以使用
CASE @day
WHEN GETDATE() THEN 'x'
WHEN DATEADD(DAY, 1, GETDATE() THEN 'y'
END
或者你可以使用:
CASE
WHEN @day = GETDATE() THEN 'x'
WHEN @day > GETDATE() THEN 'y'
END
这是正确的方法:
SET @Enddate = CASE
WHEN @Day < GETDATE()
THEN DATEADD(DAY, -1, GETDATE())
ELSE GETDATE()
END