java - ResultSet.getTimestamp ("date") 与 ResultSet.getTimestamp ("date", Calendar.getInstance(tz))

标签 java oracle jdbc sybase

java.util.Datejava.util.Timetamp 似乎让很多人感到困惑。在 StackOverflow 中有很多问题,不幸的是我的问题有点扭曲。

有 2 个 JDBC api。他们应该如何表现? RDBMS 之间是否存在任何一致性?

ResultSet.getTimestamp("dateColumn") 
ResultSet.getTimestamp("dateColumn", Calendar.getInstance(tz))

如果有人了解 Sybase,能否请您分享您的经验?

最佳答案

首先,您混淆了 java.utiljava.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 TIMESTAMPDATETIME 字段类型。

至于时区,当数据库不存储时区信息时(因此,所有时间戳都存储在 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/

相关文章:

c# - .NET 4.0 中的只读列表或不可修改列表

java - Java中的多维数组(或其他结构)

java - 如何创建字符串的 Java 映射到由多个数据行构建的复杂对象

SQL 两个表之间所有可能的循环组合

xml - Temenos T24 如何存储数据

sql - Oracle "ORA-01008: not all variables bound"错误带参数

java - 尝试在 REPEATABLE-READ 隔离级别下在 MySQL 中创建幻像

java - 双重嵌套事务的回滚绕过保存点

java - Java封装

mysql - 即使生成 csv,实体管理器也会抛出 "ResultSet is from update. No data"