【发布时间】:2017-05-17 21:09:23
【问题描述】:
我有一个查询,它在 '01/05/2017' 和 '05/05/2017' 之间进行选择并返回类似的行
Date EmployeeCode EmployeeName EntryTime ExitTime
01/05/2017 10 a 08:00 18:00
02/05/2017 10 a 08:30 17:30
03/05/2017 10 a 08:30 17:30
03/05/2017 10 c 07:30 19:30
04/05/2017 10 c 09:30 18:30
05/05/2017 10 c 08:30 15:30
但我想看到像
Date EmployeeCode EmployeeName EntryTime ExitTime
01/05/2017 10 a 08:00 18:00
02/05/2017 10 a 08:30 17:30
03/05/2017 10 a 08:30 17:30
04/05/2017 10 a - -
05/05/2017 10 a 08:30 17:30
01/05/2017 10 c - -
02/05/2017 10 c - -
03/05/2017 10 c 07:30 19:30
04/05/2017 10 c 09:30 18:30
05/05/2017 10 c 08:30 15:30
我尝试加入日期范围,但无法获得我想要的结果。
WITH mycte AS
(
SELECT CAST('2017-05-01' AS DATETIME) DateValue
UNION ALL
SELECT DateValue + 1
FROM mycte
WHERE DateValue + 1 <= CAST('2017-05-05' AS DATETIME)
)
SELECT
DateValue
FROM mycte
我怎样才能得到这些行?
【问题讨论】:
-
您的数据库中有
dates表吗? -
这些是您正在寻找的日期吗? xkcd PSA ISO 8601
-
加入日历表...有 100 个示例。
-
我没有日期表@vkp。但我可以添加。
-
日期是一个例子。我将发送日期参数@SqlZim
标签: sql datetime sql-server-2008-r2 timespan date-range