日期格式的Datediff

时间:2012-02-20 11:20:18

标签: mysql datediff date-format

我有两个结构为

的表
Emp Table

id    name

001   Smith
002   Jerry


Leave
sr.no   reason      from_date       to_date      request_by   status 
 1      PL          2011-12-11     2011-12-15      001        Declined

 2      PL          2011-11-13     2011-11-13      001        Approved  

 3      PL          2011-10-02     2011-10-05      002        Declined

现在我写了这个查询

select DATEDIFF(Leave.from_date,Leave.to_date)as cdate,
Emp.id as emp
from Leave left join Emp 
on Leave.request_by=Emp.id

让我区分这两个日期,比如......

cdate   emp 
 -4     001  
  0     001
 -3     002

关于'2011-12-11&amp ;; 2011-12-15'连续5天需要5人员工缺席。我们实现了它。

但我需要这个日期格式的cdate('%Y%m%d')和+如果日期差异为-4,则应显示4条记录。 所以我想写一个查询,给出这样的输出......

cdate            emp
2011-12-11       001
2011-12-12       001 
2011-12-13       001
2011-12-14       001
2011-12-15       001
2011-11-13       001
2011-10-02       002
2011-10-03       002
2011-10-04       002
2011-10-05       002

所以有人可以告诉我应该怎样编写查询才能获得此输出?

1 个答案:

答案 0 :(得分:2)

尝试此查询 -

CREATE TABLE temp_days(d INT(11));
INSERT INTO temp_days VALUES
  (0),(1),(2),(3),(4),(5),
  (6),(7),(8),(9),(10),
  (11),(12),(13),(14),(15); -- maximum day difference, add more days here

SELECT l.from_date + INTERVAL td.d DAY cdate, e.id emp
FROM
  `leave` l
LEFT JOIN Emp e
  ON l.request_by = e.id
JOIN temp_days td
  ON DATEDIFF(l.to_date, l.from_date) >= td.d
ORDER BY
  e.id