如何获取 JDBC 日期格式?

Posted

技术标签:

【中文标题】如何获取 JDBC 日期格式?【英文标题】:how to get JDBC Date format? 【发布时间】:2011-11-22 15:57:26 【问题描述】:

我浏览了页面,没有找到满意的答案。

是否有可能从 JDBC 获取默认数据格式?

我正在编写一个程序,用户可以在其中选择不同类型的数据库(如 Oracle、MSSQL 等)并向其中插入数据。我需要 JDBC 来告诉我默认的日期格式是什么。

有人遇到过这种情况吗?

提前感谢您的回答。

【问题讨论】:

【参考方案1】:

不应该需要日期格式。您应该使用PreparedStatement 并调用setDatesetTimestamp 来传递数据。无需将其转换为字符串格式,因为您不应在 SQL 中表示值(或 any 值)。

【讨论】:

【参考方案2】:

您通常不应该关心日期格式。如果这样做,则意味着您将日期视为字符串,方法是将它们存储为 Java 端的 String 和 DB 端的 VARCHAR 。这是错误的。它们应该在 Java 端存储为 java.util.Date,在 DB 端存储为 DATETIMETIMESTAMPDATE(如果您不关心时间部分)。

存储日期(带时间)的正常方法是使用PreparedStatement#setTimestamp()

preparedStatement = connection.prepareStatement("INSERT INTO person (birthdate) VALUES (?)");
preparedStatement.setTimestamp(1, new Timestamp(date.getTime()));
// ...

取回它的正常方法是使用ResultSet#getTimestamp()

Date date = resultSet.getTimestamp("birthdate");
// ...

这不仅无需担心特定于 DB 的默认日期字符串格式,而且还允许在 SQL 端使用 ><BETWEEN 等对选择日期进行更细粒度的控制,以及在 Java 端使用 SimpleDateFormat 进行更细粒度的日期格式。

另见:

Handling mysql datetimes and timestamps in Java

【讨论】:

以上是关于如何获取 JDBC 日期格式?的主要内容,如果未能解决你的问题,请参考以下文章

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

如何以日期格式获取日期选择器值?

如何获取日期格式以大写月份和日期

如何使用 XSLT 2.0 获取当前日期时间的 RFC1123 日期格式

如何以提交按钮触发的日期时间格式获取日期

如何在 ASP.NET 中以 'YYYY-MM-DD' 格式获取当前日期?