如何从日期范围获取当前年份的天数?

时间:2014-01-06 15:34:55

标签: php mysql sql date

在我的数据库中,我有“startingdate”,“endingdate”,“daterange”,“numdays”等属性以及其他一些对我的问题没有任何重要性的属性。我正在尝试建立一个休假申请系统,允许用户申请休假。

属性“startingdate”和“endingdate”是相当自我解释的。 “numdays”是从“起始日期”到“结束日期”的天数。至于“日期范围”,它是从开始日期到结束日期的所有日期,不包括开始日期。例如,如果开始日期是2014-01-01,结束日期是2014-01-03,则“日期范围”将是“2014-01-02 2014-01-03”。我需要这个用于php日历以突出显示用户已经应用的日期。

我遇到的问题是我不知道如何找到用户今年请假的天数。假设用户在2014-12-30至2015-01-02申请休假,“日期范围”将为“2014-12-31 2015-01-01 2015-01-02”。我如何找到2014年的天数?

很抱歉这个问题很长。

1 个答案:

答案 0 :(得分:0)

可以更有效地完成,但我会留给你优化。

假设endingdatestartingdate之后:

select startingdate,endingdate,
case 
when year(startingdate)=year(now()) 
 and year(endingdate)=year(now()) 
then datediff(endingdate,startingdate) 
when year(startingdate)=year(now()) 
 and year(endingdate)>year(now()) 
then datediff(date(concat(year(now()),'-12-31')),startingdate)
when year(startingdate)<year(now()) 
 and year(endingdate)=year(now()) 
then datediff(endingdate,date(concat(year(now()),'-01-01')))
when year(startingdate)<year(now()) 
 and year(endingdate)>year(now()) 
then datediff(date(concat(year(now()),'-12-31')),date(concat(year(now()),'-01-01')))
else 0 end as daysOffThisYear
from myTable m;
相关问题