我正在编写一个 SQL 查询,其中涉及查找时间戳是否落在特定的日期范围内。
我已经在 PostgreSQL 中编写了它,但它在 Oracle 和 SQL Server 中不起作用:
AND creation_date < (CURRENT_TIMESTAMP - interval '5 days')
AND creation_date >= (CURRENT_TIMESTAMP - interval '15 days')
是否有通用的方法来比较不同数据库的时间戳?
最佳答案
我不是 SQL Server 专家,但我知道这适用于 Oracle 和 Postgres,我怀疑它可能适用于 MSSQL,但无法在 ATM 上对其进行测试。
AND creation_date < (CURRENT_TIMESTAMP - interval '5' day)
AND creation_date >= (CURRENT_TIMESTAMP - interval '15' day)
或者,如果您使用的是日期类型而不是时间戳,您可以这样做,但我很确定它不适用于 MSSQL。并且 DATE 类型在 Oracle 和 Pg 之间有很大的不同。
AND creation_date < CURRENT_DATE - 5
AND creation_date >= CURRENT_DATE - 15
如 OMG Ponies 的评论中所述,您只能将整数添加到日期类型,而不是时间戳。 (Oracle 默默地将时间戳转换到日期)
关于sql - 在 Oracle、PostgreSQL 和 SQL Server 中比较时间戳的常用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2505382/