我有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;
答案 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')
)