我正在尝试从表格中选择日期并获得天数。
基本上,如果该列中的日期值大于180天前,我只想返回180。但是,如果小于180天前,则我希望天数。
应该返回的最大值为180,但现在我输入的数字不正确。
此查询
select
case when p.start_date >= (curdate() - interval 180 day) then 180
when p.start_date <= (curdate()-interval 180 day) then DATEDIFF(curdate(),p.start_date) end
from table;
返回540作为2017-04-14的计数,而返回2018-07-20的180,但是我应该分别得到180和78。
我在这里到底在做什么错?
答案 0 :(得分:1)
Datediff()
函数计算天差。Least()
函数,您可以找到180中的最小值以及天数之差。如果差异大于180,则返回180;否则,返回180。除此之外。请尝试以下操作:
SELECT LEAST(180, DATEDIFF(curdate(), p.start_date))
FROM table