Oracle JDBC 驱动程序自动格式化日期列

Posted

技术标签:

【中文标题】Oracle JDBC 驱动程序自动格式化日期列【英文标题】:Oracle JDBC driver auto formatting the date column 【发布时间】:2014-09-16 10:02:24 【问题描述】:

我面临一个问题,即使日期以默认日期格式(即 dd-Mon-yy(例如 28-MAR-11)存储在 Oracle 数据库中,日期列也会自动格式化为 yyyy-MM-dd(例如2011-03-28) 使用 Oracle JDBC 驱动程序从 java 连接到 Oracle 数据库时。查看文档但找不到任何会影响默认日期格式的设置更改。 我想通过更改配置而不是在 java 中格式化日期来解决这个问题。如果有解决方案,请告诉我。 注意:我使用的是spring JDBC。

【问题讨论】:

您的示例中的日期是相同的,我猜这只是让您感到困惑的格式 - 您在输出中使用什么日期格式? Oracle 中的日期没有,也没有以任何格式存储。他们有一个内部表示,这在这里并不真正相关。无论您使用哪个客户端,都会根据客户端和会话设置(如果未指定格式,则为 NLS_DATE_FORMAT)格式化显示日期。 Java 将日期检索为日期,而不是字符串。如果您需要以特定格式显示在您的应用程序中,则必须在检索后用 Java 对其进行格式化,例如with SimpleDateFormat. 【参考方案1】:

在查询本身中更改日期时间格式(而不是在 Java 中使用日期时间格式化程序),您正在使用它来检索日期。我在使用我的一个 spring MVC 项目时遇到了同样的问题。我希望这会有所帮助。

例如:

SELECT ProductName, Price, FORMAT(Now(),'YYYY-MM-DD') AS PerDate
FROM Products;

【讨论】:

以上是关于Oracle JDBC 驱动程序自动格式化日期列的主要内容,如果未能解决你的问题,请参考以下文章

如何才能把java日期类型存入oracle数据库

jdbc连接oracle

时间戳转为日期格式

ORACLE自动备份-压缩格式,定期删除.bat

C#日期格式转换

手动向Maven本地仓库添加ORACLE jdbc驱动