回答

收藏

在Oracle,PostgreSQL和SQL Server中比较时间戳的常用方法

技术问答 技术问答 238 人阅读 | 0 人回复 | 2023-09-14

我正在编写一个SQL查询,其中涉及查找时间戳是否在特定的天数范围内。; l6 {# m6 m" j1 b/ Z! I( h
我已经在PostgreSQL中编写了它,但是在Oracle和SQL Server中不起作用:; a7 v7 ]% u: w! I8 i; |( v
AND creation_date = (CURRENT_TIMESTAMP - interval '15 days'). b  ~3 E1 T& W4 B4 k
有没有通用的方法可以比较不同数据库之间的时间戳?
4 F' F. y! h7 k7 s+ o                " k0 H: H) ~* x( x0 p$ J- A
解决方案:
! P8 P3 \- N3 |" N' M                3 x' J, m' a: _) P8 C
) z3 R' R4 N* T9 A
6 b/ F( r: K& R( I( d
                我不是SQL Server专家,但我知道它可以在Oracle和Postgres上运行,并且我怀疑它可能在MSSQL上运行,但没有办法对其进行ATM测试。7 `+ B! L! h& z- U$ G7 }& W6 U1 f( m
AND creation_date = (CURRENT_TIMESTAMP - interval '15' day)7 |* ?6 S2 B1 Z; E
或者,如果您使用日期类型而不是时间戳,则可以执行此操作,但是我很确定它不能在MSSQL上运行。Oracle和Pg之间的DATE类型完全不同。' D+ p0 W- L9 s$ F7 ]2 A
AND creation_date = CURRENT_DATE - 15" d* \2 t+ E. W# \
正如在OMG小马的注释中所指出的那样,您只能将整数添加到日期类型,而不能添加时间戳。(Oracle默默地将时间戳转换为日期)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则