SELECT a.id, a.start_time, a.end_time,a.limit_power,DATEDIFF(a.end_time, a.start_time) as diffs,
CASE WHEN DATEDIFF(a.end_time, a.start_time) >= 365 THEN 365
WHEN DATEDIFF( a.end_time,start_time) =0 then 0
ELSE DATEDIFF(a.end_time, a.start_time)
END AS actdays
FROM t_limit_power a
WHERE 2018 BETWEEN DATE_FORMAT(a.start_time, '%Y') and DATE_FORMAT(a.end_time, '%Y')
and DATE_FORMAT(a.start_time, '%Y')!=2018 and DATE_FORMAT(a.end_time, '%Y') !=2018
union all
SELECT a.id, a.start_time, a.end_time,a.limit_power,DATEDIFF(a.end_time, a.start_time) as diffs,
CASE WHEN DATEDIFF(a.end_time, a.start_time) >= 365 THEN 365
WHEN DATEDIFF( a.end_time,start_time) =0 then 0
ELSE DATEDIFF(a.end_time, a.start_time)
END AS actdays
FROM t_limit_power a
WHERE DATE_FORMAT(a.start_time, '%Y')=2018 and DATE_FORMAT(a.end_time, '%Y') =2018
union all
SELECT a.id, a.start_time, a.end_time,a.limit_power,DATEDIFF(a.end_time, a.start_time) as diffs,
DATEDIFF( a.end_time,'2018-1-1') AS actdays
FROM t_limit_power a
WHERE DATE_FORMAT(a.start_time, '%Y')!=2018 and DATE_FORMAT(a.end_time, '%Y') =2018
union all
SELECT a.id, a.start_time, a.end_time,a.limit_power,DATEDIFF(a.end_time, a.start_time) as diffs,
CASE WHEN DATEDIFF(a.end_time, a.start_time) >= 365 THEN 365
WHEN 0<DATEDIFF( a.end_time,start_time) <365 then DATEDIFF( '2018-12-31',a.start_time)
ELSE DATEDIFF(a.end_time, a.start_time)
END AS actdays
FROM t_limit_power a
WHERE DATE_FORMAT(a.start_time, '%Y')=2018 and DATE_FORMAT(a.end_time, '%Y')!=2018
当年的苦-跨年sql
版权声明: https://blog.csdn.net/weixin_41722928/article/details/85071837
猜你喜欢
转载自blog.csdn.net/weixin_41722928/article/details/85071837
今日推荐
周排行