0

我在扩展我的以下查询时遇到了一些困难。下面的查询有效,并为我提供了我需要的所有行。

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:00.000 的行吗?

谢谢

4

2 回答 2

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')
于 2012-04-26T13:27:24.810 回答
0

格式应该是

'YYYY-MM-DD HH:MM:SS'

所以 2012 年 4 月 2 日是

'2012-04-02 14:30'.

您可以使用 BETWEEN 来比较这样的日期。

于 2012-04-26T13:26:38.250 回答