计算每年开始日期和结束日期之间的持续时间

问题描述 投票:2回答:1

我正在尝试计算不同年份的持续时间,其中:

startdate     enddate       duration (days)
2016-09-20    2018-09-20    730

我想在一行中将以下结果作为每年的持续时间,其中年份为列名,结果日期为:

2016 = 103天 - 2017年= 365天 - 2018年= 263天

除了使用DATEDIFF并输入每年的结束日期之外,我找不到具体的解决方案,但这并不计算明年的剩余天数。有谁可以帮我找到MySQL的解决方案?

mysql sql date datediff
1个回答
0
投票

假设(希望)您有一个数字表,您可以进行以下计算:

SELECT startdate,
       enddate,
       number AS year_num,
       DATEDIFF(
              LEAST(DATE(CONCAT(number, '-12-31')), enddate),
           GREATEST(DATE(CONCAT(number, '-01-01')), startdate)
       ) + 1 AS num_days
FROM t
INNER JOIN (
    SELECT 2010 AS number UNION ALL
    SELECT 2011 UNION ALL
    SELECT 2012 UNION ALL
    SELECT 2013 UNION ALL
    SELECT 2014 UNION ALL
    SELECT 2015 UNION ALL
    SELECT 2016 UNION ALL
    SELECT 2017 UNION ALL
    SELECT 2018 UNION ALL
    SELECT 2019
) AS numbers ON number BETWEEN YEAR(startdate) AND YEAR(enddate)
© www.soinside.com 2019 - 2024. All rights reserved.