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

Java LocalDateTime转日期存储Oracle DATE列的格式适配问题

解决Java LocalDateTime存储到Oracle DATE列的格式问题

首先明确一个关键事实:Oracle的DATE类型并不存储字符串格式,它存储的是包含日期和时分秒的二进制时间值,你看到的2024-04-29T18:24:41是Java中LocalDateTime对象的toString()输出格式,和数据库实际存储的时间值无关。

优化你的Java代码

你当前的代码做了无意义的字符串转换,直接获取当前时间即可(注意要实例化实体对象,避免空指针异常):

SewaApiReqResEntity sewaApiHealthReqRes = new SewaApiReqResEntity();
LocalDateTime sentTime = LocalDateTime.now();
sewaApiHealthReqRes.setSentTime(sentTime);
System.out.println(sewaApiHealthReqRes.getSentTime());

这段代码的输出格式是LocalDateTime默认的toString()格式,但这只是Java层面的显示,不影响数据库存储的时间值。

如何在查询时看到指定格式

如果需要在查询结果中得到MM/dd/yyyy HH:mm:ss格式的时间,不要修改存储逻辑,而是在SQL查询时用TO_CHAR函数格式化:

SELECT TO_CHAR(sent_time, 'MM/DD/YYYY HH24:MI:SS') AS formatted_sent_time 
FROM your_table_name;
  • HH24表示24小时制,避免12小时制的AM/PM问题
  • MI是分钟的正确格式符(不要用MM,MM代表月份)

调整Oracle SQL Developer的默认显示格式

如果希望在SQL Developer中默认显示指定格式的DATE值:

  1. 打开SQL Developer,点击Tools -> Preferences
  2. 导航到Database -> NLS
  3. 在Date Format输入框中填写MM/DD/YYYY HH24:MI:SS
  4. 保存设置后重新查询,即可看到默认格式化后的日期

关于实体类字段类型

用LocalDateTime是正确的选择,它完美对应Oracle DATE类型的日期+时分秒存储特性。之前尝试的java.util.Date是旧API,反而需要额外处理时区和转换逻辑,不如Java 8+的新日期API清晰可靠。

内容的提问来源于stack exchange,提问作者Rahul.V

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:10:03