确定两列之间的时差超过4小时的行

时间:2015-10-29 13:21:54

标签: sql date time sql-server-2008-r2

我的表中有两列名为GXHEAD。有PRECISETIME和DEVALERT。

PRECISETIME和DEVALERT都将时间保持为varchar(255),格式为“DD / MM / YYYY HH:MM:SS”(例如:“20/03/2014 14:07:11”)。

我想识别DEVALERT超过PRECISETIME 4小时的所有行。

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

DATEDIFF(Hour, Cast(PRECISETIME as DATETIME), Cast(DEVALERTas DATETIME)) > 4

另请注意,将日期存储为varchar()是一种不好的做法。你应该总是避免这种情况。

尝试设置:

set dateformat dmy

答案 1 :(得分:2)

您需要将CONVERT列添加到DATETIME值并对其进行DATEDIFF()

您应该将您的值存储为适当的数据类型,因为这根本不是SARGable。

Select  *
From    GXHEAD
Where   DateDiff(Hour, Convert(DateTime, PRECISETIME, 103), Convert(DateTime, DEVALERT, 103)) >= 4