You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在ANSI/ISO SQL标准语法可获取数据库当前时间?

标准SQL获取当前时间的实现说明

1. 带时区/UTC时间获取可行性

可以实现,ANSI SQL标准已经提供了对应语法:

  • 要获取带时区信息的当前时间:直接使用标准定义的CURRENT_TIMESTAMP即可,该函数返回类型为TIMESTAMP WITH TIME ZONE,自带当前会话的时区属性。
  • 要直接获取UTC时间:可以使用标准语法CURRENT_TIMESTAMP AT TIME ZONE 'UTC',即可将当前时间转换为UTC时区返回。

2. 跨DBMS通用写法说明

不存在100%不受具体DBMS限制的通用写法,差异来源于部分数据库的历史设计要求:

  • ANSI SQL标准本身没有强制要求SELECT仅返回函数/常量的语句必须携带FROM子句,目前PostgreSQL、SQL Server、MySQL 8.0+、SQLite、BigQuery等绝大多数主流数据库都支持直接执行SELECT CURRENT_TIMESTAMP;。
  • 只有Oracle、达梦等Oracle兼容体系的数据库,以及非常老的MySQL版本要求必须加FROM DUAL才能执行无表查询。

如果需要兼容多类数据库,最稳妥的方案是在数据访问层根据连接的数据库类型做语法适配,按需拼接FROM DUAL子句即可。

主流数据库实际使用示例

  • 获取带时区的当前时间:
    • Oracle/达梦:SELECT CURRENT_TIMESTAMP FROM DUAL;
    • 其他主流数据库:SELECT CURRENT_TIMESTAMP;
  • 获取UTC时间:
    • 支持ANSI标准语法的数据库(PostgreSQL、MySQL 8.0+、SQL Server 2016+):SELECT CURRENT_TIMESTAMP AT TIME ZONE 'UTC';
    • Oracle:SELECT SYS_EXTRACT_UTC(CURRENT_TIMESTAMP) FROM DUAL;
    • 低版本MySQL:SELECT UTC_TIMESTAMP();
    • 低版本SQL Server:SELECT GETUTCDATE();

内容的提问来源于stack exchange,提问作者stmoebius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:15:03