TSQL - 小于或大于日期

时间:2015-12-20 11:52:25

标签: sql-server tsql

我想生成一个查询,显示startdate是否少于4个月,如果超过4个月给出10%,则给出5%。

我正在使用SQLFiddle而我没有得到正确的输出。目前它给我5%的所有列或者如果我替换

 SET Discount = '' 

 SET Discount = '5%' 

它将成功查询但不显示数据。

这是我做的代码......

Declare
 startdate  date,
 finishdate date,
 Discount varchar(4)

UPDATE Persons
SET [Discount] = ' ' 
SELECT *, DATEADD(MM,-4,startdate) AS TADate
FROM Persons 
WHERE Discount = '5%' AND startdate < dateadd(month,-4,getdate()) OR 
Discount = '10%' AND startdate < dateadd(month,4,getdate())

如果有人可以帮助我,请提前致谢。

2 个答案:

答案 0 :(得分:3)

case中使用update语句根据date分配折扣

尝试update这样的

UPDATE Persons SET [Discount] = case 
when startdate > dateadd(month,-4,getdate()) and startdate <= getdate() then '5%' 
when startdate < dateadd(month,-4,getdate()) Then '10%' 
End
SELECT * FROM Persons 

答案 1 :(得分:0)

选中此项,您可以在使用update语句时使用case语句

 Declare
 startdate  date,
 finishdate date,
 Discount varchar(4)

UPDATE Persons
SET [Discount] = Case 
When startdate < dateadd(month,-4,getdate()) and startdate <= getdate()
Then '5%' when startdate < dateadd(month,4,getdate()) Then '10%'  
End