【问题标题】:MS SQL Join on dateTimeMS SQL 加入日期时间
【发布时间】:2009-09-25 07:41:50
【问题描述】:

我有一个连接两个表的查询。 连接是在几个列上完成的,包括一个 dateTime 列。 我目前遇到的问题是一个 dateTime 列存储毫秒,而另一个表是从不包含毫秒的文件中填充的 因此,连接永远不会返回结果。

有没有办法通过 SQl 忽略毫秒?

【问题讨论】:

    标签: sql sql-server datetime


    【解决方案1】:

    如果 aTable.date 包含毫秒而 bTable.date 不包含,则比较它们:

    ... WHERE convert(varchar, aTable.date, 120) = bTable.date
    

    使用 arg2=120 将 datetime 转换为 varchar 会产生这种格式:ODBC canonical yyyy-mm-dd hh:mi:ss

    【讨论】:

    • 这增加了另一个显式转换回日期时间。
    【解决方案2】:

    这仍然有一个功能,但避免字符串和转换

    WHERE
        aTable.date >= bTable.date
        AND
        aTable.date < DATEADD(second, 1, bTable.date)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 2012-08-21
      • 1970-01-01
      • 2021-12-08
      相关资源
      最近更新 更多