我试图做的只是返回下面查询中的列,其中第一个调度时间(inmain.firstdtm
)和事件无线电日志中的相关时间戳匹配(incilog.timestamp
)代码代表单位为dispatched('D')
。
问题是时间戳记录到纳秒,而firstdtm字段则没有。
所以在where语句中我怎样才能将timedate文件只比较到第二个呢?
SELECT DISTINCT inmain.inci_id, inmain.calltime, inmain.firstdtm, incilog.timestamp, incilog.userid, inmain.secs2fn, inmain.secs2di,
inmain.calltaker, inmain.street
FROM incilog INNER JOIN
inmain ON incilog.inci_id = inmain.inci_id
WHERE (inmain.calltime>= dateadd(day,datediff(day,30,GETDATE()),0)
AND inmain.calltime< dateadd(day,datediff(day,0,GETDATE()),0)) AND (inmain.agency= 'UEMS')
AND (incilog.transtype='D') AND (inmain.firstdtm=???
答案 0 :(得分:0)
如果incilog.timestamp
字段是日期时间/日期时间2,您可以通过使用dateadd减去毫秒部分来删除毫秒部分,如下例所示:
declare @ts datetime
set @ts = getdate()
select @ts ts, dateadd(MILLISECOND, -datepart(MILLISECOND, @ts),@ts) ts_no_ms
ts ts_no_ms
----------------------- -----------------------
2014-11-14 01:47:42.663 2014-11-14 01:47:42.000
使用此逻辑,您可以在where子句中执行以下操作:
WHERE (inmain.firstdtm = dateadd(MILLISECOND, -datepart(MILLISECOND, incilog.timestamp),incilog.timestamp)