我目前正在使用 Oracle,但大多数 SQL 与 db 无关。一个例外是在 MSSQL 中失败的 CURRENT_TIMESTAMP。是否也可以为此迁移到更便携的语法?
问问题
1905 次
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 回答