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

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

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

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

有人遇到过这种情况吗?

提前感谢您的回答。

【问题讨论】:

    标签: database 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 进行更细粒度的日期格式。

      另见:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 2021-09-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多