我有以下内容(我知道这在语法上是不正确的,甚至可能是荒谬的):
and lp.lease_current_stop_date
case when @lease_expiry_period = 01
then
between dateadd(MONTH, +1,
getdate())
else
between dateadd(MONTH, +2,
getdate())
我只是想知道最好的方法是什么?我正在尝试做的就是:
*当@lease_expiry_period等于01时,显示所有租约从现在起一个月内到期。当@lease_expiry_period等于02时,显示所有租约从现在起两个月后到期。*
效果记录
值得注意的是,为了简单起见,我没有在我的例子中截断日期。因为这是使用月份getdate()应该是:
Dateadd(d,0,datediff(d,0,getdate()))
为了获得最佳表现。
答案 0 :(得分:6)
AND lp.lease_current_stop_date BETWEEN getdate() AND dateadd(MONTH, @lease_expiry_period, getdate())
答案 1 :(得分:1)
以下
怎么样? select *
from [table] lp
where lp.lease_current_stop_date= (
select case
when @lease_expiry_period = 01
then
dateadd(MONTH, +1, getdate())
else
dateadd(MONTH, +2,getdate())
end)
答案 2 :(得分:1)
...
AND 'T' = CASE WHEN @lease_expiry_period IN (01, 02) THEN
CASE WHEN lp.lease_current_stop_date
BETWEEN getdate()
AND dateadd(MONTH, @lease_expiry_period, getdate())
THEN 'T'
END
END
AND ...