Mig*_*elo 10 sql-server sql-server-2005
如何只比较SQL Server 2005中DateTime数据类型的时间部分?例如,我想获取MyDateField在特定时间之后的所有记录.以下示例是一个非常长且可能不快的方法.我想要MyDateField大于12:30:50.400的所有日期
SELECT *
FROM Table1
WHERE ((DATEPART(hour, MyDateField) = 12) AND (DATEPART(minute, MyDateField) = 30) AND (DATEPART(second, MyDateField) = 50) AND (DATEPART(millisecond, MyDateField) > 400))
OR ((DATEPART(hour, MyDateField) = 12) AND (DATEPART(minute, MyDateField) = 30) AND (DATEPART(second, MyDateField) > 50))
OR ((DATEPART(hour, MyDateField) = 12) AND (DATEPART(minute, MyDateField) > 30))
OR ((DATEPART(hour, MyDateField) > 12))
Run Code Online (Sandbox Code Playgroud)
Luk*_*keH 13
SELECT *
FROM Table1
WHERE DATEADD(day, -DATEDIFF(day, 0, MyDateField), MyDateField) > '12:30:50.400'
Run Code Online (Sandbox Code Playgroud)
这个怎么样?
SELECT (fields)
FROM dbo.YourTable
WHERE DATEPART(HOUR, MyDate) >= 12
AND DATEPART(MINUTE, MyDate) >= 23
AND DATEPART(SECOND, MyDate) >= 45
Run Code Online (Sandbox Code Playgroud)
小时以24小时格式给出,例如12表示中午12小时,15表示下午3点.
DATEPART还有分数,秒等的"部分".您当然可以根据需要在WHERE子句中使用尽可能多的日期部分.