获取列A小时差异与B列不同的8到9小时的所有行

时间:2015-01-05 21:11:42

标签: sql sql-server sql-server-2008 tsql datetime

我有两个日期时间字段。我想根据第一个日期时间列不比第二个日期时间列提前8或9小时的条件选择字段。

知道如何解决这个问题吗?

类似的东西:

WHERE ((DATEPART(HOUR, tableA.date1) != (DATEPART(HOUR, tableA.date2))

如果我们有两个日期的日期,例如1月1日晚上1点20分和1月1日09:50 AM,我不确定DATEPART(HOUR,...))是否有效。

2 个答案:

答案 0 :(得分:0)

即使DATEDIFFMINUTE中的时间为60DATETIMECOL1使用DATETIMECOL2并除以8:59am to 4:01pm也会为您带来精确的差异

SELECT * FROM YourTable
WHERE (DATEDIFF(MINUTE,DATETIMECOL2,DATETIMECOL1)/60) < 8 
OR (DATEDIFF(MINUTE,DATETIMECOL2,DATETIMECOL1)/60) > 9

答案 1 :(得分:0)

使用JOIN。以下查询可能有所帮助 -

SELECT *
FROM your_table a
LEFT JOIN your_table b ON a.id = b.id
WHERE (DATEDIFF(MINUTE, a.date1, b.date2) < 480) OR (DATEDIFF(MINUTE, a.date1, b.date2) < 540)