日期和时间范围的SQL帮助

时间:2012-04-26 13:17:11

标签: tsql date time

我在扩展下面的查询时遇到了一些小问题。 下面的查询工作,并给我所有我需要的行。

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的行?

感谢

2 个答案:

答案 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来比较这样的日期。