10

我需要在datatimestamp具有两年数据的 SQL Server Management Studio Microsoft SQL Server 2005 - 9.00.4060.00 (X64) DB 表中选择包含时间 > 每天下午 4 点的数据。最好的方法是什么?我的时间戳具有以下格式: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
4

2 回答 2

24

很难阅读您的问题,但假设您确实使用的是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 和 Time 样式转换日期以将日期转换为时间字符串,然后转换回 adatetime以与所需时间进行比较。

SQL Server 2008+

SELECT Yield, [Date], ProductType, Direct 
FROM MIAC_CCYX 
WHERE CAST([Date] as time) > CAST('16:45' as time)
于 2012-11-26T20:24:53.330 回答
1

无论您的日期是什么,这都会起作用。这不会比较日期。相反, Datepart() 将从 datetime 中提取小时元素并与您的给定时间比较(例如,在您的情况下为下午 4 点)

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

我假设 ModifiedDate 作为列名。这将从下午 4 点到晚上 11:59:59 返回数据 编辑:我已经对照 MS SQL Server 2012 进行了检查。它也适用于日期时间格式。

于 2012-11-26T20:40:15.853 回答