在MySQL中使用日期计数和日期差异

时间:2018-10-06 18:44:13

标签: mysql

我正在尝试从表格中选择日期并获得天数。

基本上,如果该列中的日期值大于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。

我在这里到底在做什么错?

1 个答案:

答案 0 :(得分:1)

  • 使用Datediff()函数计算天差。
  • 使用Least()函数,您可以找到180中的最小值以及天数之差。如果差异大于180,则返回180;否则,返回180。除此之外。

请尝试以下操作:

SELECT LEAST(180, DATEDIFF(curdate(), p.start_date)) 
FROM table