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

Oracle中trunc(SYSDATE)取当前日期,PostgreSQL是否支持及替代方案?

Oracle语句select trunc(SYSDATE) from dual;在PostgreSQL中的可行性

这条语句无法直接在PostgreSQL中运行,原因有两点:

  • PostgreSQL不存在dual虚拟表:PostgreSQL支持直接执行无FROM子句的单行查询,不需要依赖这类虚拟表返回单行结果;
  • 尽管PostgreSQL兼容SYSDATE(作为CURRENT_TIMESTAMP的别名),但原语句会因dual表不存在抛出错误。
PostgreSQL的替代实现方案

要达到Oracle中trunc(SYSDATE)获取当前纯日期(仅保留年月日、去除时分秒)的效果,有以下几种常用方法:

方法1:直接使用CURRENT_DATE

这是最简洁的方式,CURRENT_DATE是PostgreSQL标准内置函数,直接返回无时分秒的日期类型值:

SELECT CURRENT_DATE;

方法2:用trunc()截断时间戳

如果基于时间戳(比如CURRENT_TIMESTAMP)截断到日期部分,可使用trunc()函数,默认行为就是截断到天:

SELECT trunc(CURRENT_TIMESTAMP);

也可以显式指定截断单位为'day',效果完全一致:

SELECT trunc(CURRENT_TIMESTAMP, 'day');

方法3:使用DATE_TRUNC()函数(更灵活)

DATE_TRUNC()是PostgreSQL功能更丰富的日期截断函数,支持截断到年、月、日、小时等多种粒度。截断到天的写法如下:

SELECT date_trunc('day', CURRENT_TIMESTAMP);

注:DATE_TRUNC()返回timestamp类型(会显示00:00:00的时分秒),若需转为纯date类型,可添加类型转换:

SELECT date_trunc('day', CURRENT_TIMESTAMP)::date;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:43:11