如何在SQL 2008r2中仅返回一个命令实例

时间:2014-11-13 21:57:54

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

我试图做的只是返回下面查询中的列,其中第一个调度时间(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=???

1 个答案:

答案 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)