我有 2 个表的结构为
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 和 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
那么谁能告诉我应该如何编写查询才能获得此输出?
最佳答案
试试这个查询 -
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
关于mysql - 日期格式的 Datediff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9360286/