我的表中有两列名为GXHEAD。有PRECISETIME和DEVALERT。
PRECISETIME和DEVALERT都将时间保持为varchar(255),格式为“DD / MM / YYYY HH:MM:SS”(例如:“20/03/2014 14:07:11”)。
我想识别DEVALERT超过PRECISETIME 4小时的所有行。
答案 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