【问题标题】:SQL comparison of two dates两个日期的SQL比较
【发布时间】:2020-01-21 00:21:29
【问题描述】:

我在 SQL 数据库中有两个日期存储为 datetimeSALE_ORDER.LMOD_HOSTSALE_ORDER.CREATION_TS

两个日期的格式如下:

2020-01-20 12:46:15.220

如果我想在 SQL 语句中比较两者,如何检查两者是否在一分钟内?

类似:

  where left(SALE_ORDER.LMOD_HOST,16) = left(SALE_ORDER.CREATION_TS,16)

所以比较是2020-01-20 12:462020-01-20 12:46

【问题讨论】:

  • (1) 用您正在使用的数据库标记您的问题。 (2) 请不要说您将日期存储为字符串。如果是这种情况,则首先修复数据。然后解决问题。数据库具有内置数据类型是有原因的。
  • 你用的是什么数据库?
  • 不,我只想检查两个日期是否相同。不要介意第二个。
  • @glh "SQL" 是一种查询语言,而不是数据库产品。每个关系数据库都是一个“SQL 数据库”。日期/时间函数是高度特定于供应商的。在 Postgres 中你可以使用 date_trunc() 在 Oracle 中你可以使用 trunc()

标签: sql


【解决方案1】:

众所周知,日期时间函数依赖于数据库。在标准 SQL 中,您将使用:

where lSALE_ORDER.LMOD_HOST < SALE_ORDER.CREATION_TS + interval '1 minute'

我假设创建总是更早。

在 SQL Server 中(令人沮丧的许多人将其称为“SQL”,导致很多混乱):

where lSALE_ORDER.LMOD_HOST < dateadd(minute, 1, SALE_ORDER.CREATION_TS)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    相关资源
    最近更新 更多