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

Oracle 19c中如何将Timestamp转换为不带时间的Date?

在Oracle 19c里,你得先明确一个核心点:Oracle的DATE类型本身就包含日期和时间部分,所以CAST(mytimestampfield AS DATE)只是完成了Timestamp到DATE类型的转换,但DATE依然携带时间信息——你看到输出带时间,要么是客户端工具的默认显示格式,要么是DATE本身的时间部分没被处理。

要实现你要的「纯日期」效果,分两种场景处理:

1. 得到时间部分为午夜(00:00:00)的DATE类型

如果需要的还是DATE类型,但要把时间部分清零,用TRUNC()函数截断时间即可:

SELECT TRUNC(SYSTIMESTAMP) FROM dual;

这个语句返回的DATE类型,日期为当前日期,时间部分被强制设为00:00:00。如果客户端工具默认显示时间,你可能会看到2024-02-28 00:00:00,但从逻辑上已经是你要的「纯日期」状态。

2. 直接返回纯日期格式的字符串

如果只是需要输出YYYY-MM-DD格式的纯日期字符串,用TO_CHAR()指定格式更直接:

SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD') FROM dual;

这个语句直接返回字符串类型的结果,就是你想要的2024-02-28格式。

额外说明:Oracle没有单独的「纯日期」数据类型,所有日期类类型(DATE、TIMESTAMP)都包含时间信息。如果是存储需求,用TRUNC()截断后的DATE就足够;如果是前端展示或文本输出需求,TO_CHAR()是更合适的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:25:02