在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默默地将时间戳转换为日期) |
|
|
|
|
|