java.util.Date
、java.util.Timetamp
似乎让很多人感到困惑。在 StackOverflow 中有很多问题,不幸的是我的问题有点扭曲。
有 2 个 JDBC api。他们应该如何表现? RDBMS 之间是否存在任何一致性?
ResultSet.getTimestamp("dateColumn")
ResultSet.getTimestamp("dateColumn", Calendar.getInstance(tz))
如果有人了解 Sybase,能否请您分享您的经验?
最佳答案
首先,您混淆了 java.util
和 java.sql
。使用 PreparedStatement#setDate()
时和 ResultSet#getDate()
, 你需要 java.sql.Date
.类似地,当使用 PreparedStatement#setTimestamp()
时和 ResultSet#getTimestamp()
你需要 java.sql.Timestamp
.
其次,重要的是要了解 java.sql.Date
仅表示 date(年、月、日),仅此而已。这将映射到 SQL DATE
字段类型。 java.sql.Timestamp
表示时间戳(年、月、日、时、分、秒、毫秒),与java.util.Date
完全相同。和 java.util.Calendar
做。这将映射到 SQL TIMESTAMP
或 DATETIME
字段类型。
至于时区,当数据库不存储时区信息时(因此,所有时间戳都存储在 UTC (GMT) 中),您需要它。然后你可以传递一个包含当前时区信息的Calendar
,这样JDBC驱动程序就可以将UTC时间戳调整为符合时区的时间戳。例如,如果是 GMT+1,则 JDBC 驱动程序将在返回前将时间戳添加一小时。
关于java - ResultSet.getTimestamp ("date") 与 ResultSet.getTimestamp ("date", Calendar.getInstance(tz)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2584695/