Дата в формате даты - PullRequest
       11

Дата в формате даты

1 голос
/ 20 февраля 2012

У меня есть 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 дней подряд работник отсутствует.Это мы добиваемся этого.

Но мне нужна эта дата в формате даты, например ('% 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 Ответ

2 голосов
/ 20 февраля 2012

Попробуйте этот запрос -

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
...