代码之家  ›  专栏  ›  技术社区  ›  THEn

按日期时间字段加入SQL Server

  •  0
  • THEn  · 技术社区  · 16 年前



    日志表有日期时间字段2008-10-26 06:21:59.820


    7 回复  |  直到 16 年前
        1
  •  7
  •   tekBlues    16 年前

    这是一种方法:

    select * from table_a, table_b
    where table_a.sku = table_b.sku
    and abs(datediff(second,table_a.datetime,table_b.datetime))<=3
    

        2
  •  5
  •   Tomalak    16 年前
    SELECT
      t1.id,
      t2.id
    FROM
      t1
      INNER JOIN t2 ON ABS(DATEDIFF(ms, t1.datefield, t2.datefield)) <= 3000
    WHERE
      ...
    

    技术上

    编辑:

    更改自 ABS(DATEDIFF(ss, t1.datefield, t2.datefield)) <= 3

        3
  •  2
  •   Guffa    16 年前

    我脑海中浮现出两种方式:

    ... on other.date between dateadd(second,-3,log.date) and dateadd(second,3,log.date)
    

    ... on abs(datediff(millisecond, other.date, log.date)) <= 3000
    

        4
  •  2
  •   dkretz    16 年前

    高效地做到这一点很有挑战性,因为你最终会使用表达式而不是直接使用字段值进行查询,而且这样的查询不能很好地使用索引。

    其中日期添加(ms,date1,3)<date2和DATEADD(ms,date1,-3)>日期2

    其中date2介于DATEADD(ms,date1,3)和DATEADD(毫秒,date1-3)之间

        5
  •  1
  •   Jesse    16 年前

        6
  •  0
  •   Justin Balvanz    16 年前
    SELECT tbl1.*, tbl2.*
    FROM tbl1, tbl2
    WHERE ABS(DATEDIFF(second, tb1.date, tbl2.date)) <= 3
    
        7
  •  0
  •   Bill    16 年前

    没有测试,但这应该有效。。。

    Select *
    From tbl1
      inner join tbl2 on tbl1.id=tbl2.id and 
         Datediff(second, tbl1.dttime, tbl2.dttime) between -3 and 3