2个日期之间的天数-MYSQL

时间:2019-01-19 15:48:33

标签: mysql

我有2个日期,我试图计算1998年以来的几天。

我当前的代码返回日期之间的天数,而不是1998年以来的天数。

示例:

salaries.from_date = 1997-06-23
salaries.to_date = 1998-06-23

查询:

  select datediff("1999-01-01", salaries.from_date)
       , salaries.from_date
       , salaries.to_date 
    from salaries 
   where YEAR(salaries.from_date) = 1998 
      or YEAR(salaries.to_date) = 1998;

1 个答案:

答案 0 :(得分:0)

我了解到,对于给定的日期间隔,您想计算属于1998年的天数。

我建议以下逻辑:

DATEDIFF(
   CASE
        WHEN to_date > '1998-12-31' THEN '1998-12-31'
        WHEN to_date < '1998-01-01' THEN '1998-01-01'
        ELSE to_date
   END,
   CASE
        WHEN from_date > '1998-12-31' THEN '1998-12-31'
        WHEN from_date < '1998-01-01' THEN '1998-01-01'
        ELSE from_date
   END
)

这可能简化为:

DATEDIFF(
     LEAST(GREATEST(to_date, '1998-01-01'), '1998-12-31'),
    LEAST(GREATEST(from_date, '1998-01-01'), '1998-12-31')
)