mysql - 日期格式的 Datediff

标签 mysql datediff date-format

我有 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/

相关文章:

mysql - Mysql Workbench错误1452-无法创建源表

date - 为什么 ColdFusion 的 DateDiff 返回奇怪/负值?

mysql - 如何总结没有周末的休假时间

java - 获取日期差异的返回值?

c# - 带日期的 Subsonic 3.0 ActiveRecord

java - 数据库多线程插入(更新)和单线程顺序插入(更新)的性能比较?

MYSQL查询每小时/每天消费数据

mysql - 查找并发日期范围中的差距 - MySQL

java - java中的通用日期解析

Java 简单日期格式 : an hour wrong