【问题标题】:A datetime equivalent in java.sql ? (is there a java.sql.datetime ?)java.sql 中的日期时间等价物? (有 java.sql.datetime 吗?)
【发布时间】:2016-06-17 11:38:01
【问题描述】:

到目前为止,我还没有找到明确的答案。

我想知道使用 PreparedStatement 的 SQL 类型 DATETIME 和 java 类型的等价物是什么。

我找到了:http://www.java2s.com/Code/Java/Database-SQL-JDBC/StandardSQLDataTypeswithTheirJavaEquivalents.htm

但它指出 SQL 类型“DATETIME”与 sql.date 相同,但在查看 SQL 日期文档 (http://download.oracle.com/javase/7/docs/api/java/sql/Date.html) 时,它说时间被截断(全为零)。

我想要的是能够指定preparedStatement.setDateTime() 或某种类型。

我看到的唯一其他方法是使用时间戳,但这需要我更改列类型,而我无法想象其他人以前从未遇到过这个问题?

有什么提示吗?

编辑:我正在使用 MYSQL。

【问题讨论】:

标签: java mysql sql datetime jdbc


【解决方案1】:

java.sql 包具有三种日期/时间类型:

你想要最后一个:java.sql.Timestamp

如果您使用这些类型,则无需调用特定的 setter;只需使用:

java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());
// The JDBC driver knows what to do with a java.sql type:
preparedStatement.setObject(param); 

【讨论】:

  • 谢谢,这就是我要找的。您是如何发现这些类型与某些 SQL 类型匹配的?我有点麻烦,因为我的查询可以正常使用 NOW(),但不能在 java 中使用“now”的日期实例并将其用作时间戳?
  • 我发现我在查询中犯了错误。我错过了一些明显的东西。您的答案就是解决方案,非常感谢! :)
  • 你提到了java.sql.Date - A date only (no time),那么date.getTime()怎么会返回时间呢?
  • @FunsukWangadu 因为java.sql.Datejava.util.Date 的子类(java.sql.Time 也是),所以即使它不是“及时”,它也继承了所有方法,就好像它是。这是 java API 的设计缺陷。
  • 加一,特别是为了回答我关于设置preparedstatement的后续问题!
【解决方案2】:

MS SQL Server 或 MySQL DATETIME 数据类型或 Oracle DATE 数据类型的等价物是 java.sql.Timestamp。

【讨论】:

  • 谢谢。不过我使用的是 MYSQL,所以我更新了问题。
  • 更新答案以包含 MySQL。
【解决方案3】:

在 Java 中,我们有 java.util.Date 来处理日期和时间值。

在 SQL 中,通常有 Dates(仅日期)、Time(仅时间)和 DateTime/Timestamp(日期和时间)。

在您的 Java 程序中,通常您将始终拥有 java.util.Date,因此每次在 PreparedStatements 中设置 Dates/Times/DateTimes 时,请始终根据数据库准确选择您需要的那个。

【讨论】:

  • 如何获取 UTC 格式的 DateTime 对象(不是服务器的时区)?
【解决方案4】:

我的 Mysql 有一个类似的问题,有 SQL 日期,而在我的应用程序本地我只有日期

我是这样解决的

java.sql.Date dataStartSql = new java.sql.Date(start.getTime());  

之后正常使用 setDate,然后我使用 getTimestamp 检索第一个值。

其中 start 是一个 Date 对象。

【讨论】:

    猜你喜欢
    • 2016-11-25
    • 2020-12-15
    • 1970-01-01
    • 2010-09-12
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多