我在扩展下面的查询时遇到了一些小问题。 下面的查询工作,并给我所有我需要的行。
select (e.Firstname+' '+ e.lastname) as ApprovedBy
, wd.TargetDate
,wd.ACTDate
,wd.UploadDate
,wd.ApproveDate
From Approved wd
JOIN Employee e
on EmployeeID = wd.ApproveDateId
where wd.ApproveDate Between '4/2/2012 14:30:00.000' and '4/30/2012 23:00:59.000'
order by ApproveDate
现在我必须把它放在日期范围内? 我需要的是如何获得大于'4/2/2012 14:30:00.000'但在2012年4月2日和2012年4月30日之间的所有行的一些方向?我只想要日期范围大于14:30:00000的行?
感谢
答案 0 :(得分:1)
假设您想要DATE范围(即没有时间),那么第二个条件包括时间,可以按如下方式完成(SQL 2008 +):
SELECT ( e.Firstname + ' ' + e.lastname ) AS ApprovedBy ,
wd.TargetDate ,
wd.ACTDate ,
wd.UploadDate ,
wd.ApproveDate
FROM Approved wd
JOIN Employee e ON EmployeeID = wd.ApproveDateId
WHERE CONVERT(DATE, wd.ApproveDate) BETWEEN CONVERT(DATE, '4/2/2012', 101)
AND CONVERT(DATE, '4/30/2012', 101)
AND wd.ApproveDate > CONVERT(DATETIME, '4/2/2012 14:30:00.000', 101)
ORDER BY ApproveDate
如果您想要时间更长的所有日期(在范围内),请用以下内容替换上面的第二个条件:
AND CONVERT(TIME(0), wd.ApproveDate) > CONVERT(TIME(0), '14:30:00')
答案 1 :(得分:0)
格式应为
'YYYY-MM-DD HH:MM:SS'
所以2012年4月2日将是
'2012-04-02 14:30'.
您可以使用BETWEEN来比较这样的日期。