如何获取 JDBC 日期格式?
Posted
技术标签:
【中文标题】如何获取 JDBC 日期格式?【英文标题】:how to get JDBC Date format? 【发布时间】:2011-11-22 15:57:26 【问题描述】:我浏览了页面,没有找到满意的答案。
是否有可能从 JDBC 获取默认数据格式?
我正在编写一个程序,用户可以在其中选择不同类型的数据库(如 Oracle、MSSQL 等)并向其中插入数据。我需要 JDBC 来告诉我默认的日期格式是什么。
有人遇到过这种情况吗?
提前感谢您的回答。
【问题讨论】:
【参考方案1】:您不应该需要日期格式。您应该使用PreparedStatement
并调用setDate
或setTimestamp
来传递数据。无需将其转换为字符串格式,因为您不应在 SQL 中表示值(或 any 值)。
【讨论】:
【参考方案2】:您通常不应该关心日期格式。如果这样做,则意味着您将日期视为字符串,方法是将它们存储为 Java 端的 String
和 DB 端的 VARCHAR
。这是错误的。它们应该在 Java 端存储为 java.util.Date
,在 DB 端存储为 DATETIME
或 TIMESTAMP
或 DATE
(如果您不关心时间部分)。
存储日期(带时间)的正常方法是使用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 日期格式?的主要内容,如果未能解决你的问题,请参考以下文章