使用大于下午4点的时间选择所有数据

时间:2012-11-26 20:09:23

标签: sql sql-server sql-server-2005

我需要选择包含时间的数据> SQL Server Management Studio中的每天datatimestamp下午4点Microsoft SQL Server 2005 - 9.00.4060.00(X64)数据库表,其中包含两年的数据。最好的方法是什么?我的时间戳有以下格式:DATETIME, '2005-10-13 16:00:00', 102。我每天下午都有随机数据。我需要在每天下午4点之后获取数据。不只是一天。

例如,我试过这样的一天:

SELECT     Yield, Date, ProductType, Direct
FROM         MIAC_CCYX
WHERE     (Date < CONVERT(DATETIME, '2005-10-13 16:00:00', 102))  Thanks for help

2 个答案:

答案 0 :(得分:15)

很难阅读您的问题,但假设您确实使用datetime数据类型,则可以使用datepart查找时间大于下午4点的任何日期:

WHERE datepart(hh, YourDate) > 16

由于您现在也需要分钟,如果您想在下午4:45之后获得记录,您可以将日期投射到以下时间:

SQL Server 2000/2005

SELECT Yield, [Date], ProductType, Direct 
FROM MIAC_CCYX 
WHERE cast(convert(char(8), [Date], 108) as datetime) > cast('16:45' as datetime)

基本上,您使用convert's Date and Time styles投射日期以将日期转换为时间字符串,然后转换回datetime以与您所需的时间进行比较。

SQL Server 2008 +

SELECT Yield, [Date], ProductType, Direct 
FROM MIAC_CCYX 
WHERE CAST([Date] as time) > CAST('16:45' as time)

答案 1 :(得分:0)

这将适用于您的日期。这不会比较日期。相反,Datepart()将使用您给定的时间从日期时间和comapre中提取小时元素(例如,在您的情况下为4 P.M.)

SELECT * from <table> where DATEPART(hh, ModifiedDate) >= 16

我假设ModifiedDate为列名。这将从下午4点返回数据。到晚上11:59:59 编辑:我已经针对MS SQL Server 2012进行了检查。此外,它还可以使用日期时间格式。