10

我目前正在使用 Oracle,但大多数 SQL 与 db 无关。一个例外是在 MSSQL 中失败的 CURRENT_TIMESTAMP。是否也可以为此迁移到更便携的语法?

4

2 回答 2

9

根据他们的文档,以下供应商支持CURRENT_TIMESTAMP

总而言之,CURRENT_TIMESTAMP是 SQL 标准中所述的方法,其摘要如下,如果您正在寻找与 DB 无关的 SQL,那么您真正能做的最好的事情就是坚持标准,尽管这并不能保证任何事情都会完全数据库不可知论:

6.32 <日期时间值函数>

功能

指定一个产生日期时间类型值的函数。

格式

<current date value function> ::= CURRENT_DATE`
<current time value function> ::= CURRENT_TIME [ <left paren> <time precision> <right paren> ]
<current local time value function> ::= LOCALTIME [ <left paren> <time precision> <right paren> ]
<current timestamp value function> ::= CURRENT_TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]
<current local timestamp value function> ::= LOCALTIMESTAMP [ <left paren> <timestamp precision> <right paren> ]

通用规则

1) s CURRENT_DATE、CURRENT_TIME、CURRENT_TIMESTAMP 分别返回当前日期、当前时间、当前时间戳;返回时间和时间戳值,时区位移等于 SQLsession 的当前默认时区位移。

于 2013-12-12T11:36:04.527 回答
1

jOOQ 用户手册可用于此类查找,以及SQL 翻译网站。从手册:

-- Access
now()

-- Sybase ASE
current_bigdatetime()

-- MariaDB, MemSQL, MySQL, Snowflake
current_timestamp()

-- BigQuery, CockroachDB, CUBRID, Db2, Derby, EXASOL, Firebird, H2, HANA, HSQLDB,
-- Ignite, Ingres, Oracle, PostgreSQL, Redshift, SQLite, SQL Server, Teradata
-- Vertica
CURRENT_TIMESTAMP

-- Informix
CURRENT

-- Sybase SQL Anywhere
CURRENT TIMESTAMP

免责声明:我在 jOOQ 背后的公司工作。

于 2021-08-20T07:34:57.890 回答