Moh*_*amy 10 java oracle sybase jdbc
java.util.Date,java.util.Timetamp似乎给许多人造成了很大的困惑.在StackOverflow中有很多问题,不幸的是我的问题有点扭曲.
有2个JDBC api.他们应该如何表现?RDBMS之间是否存在任何一致性?
ResultSet.getTimestamp("dateColumn")
ResultSet.getTimestamp("dateColumn", Calendar.getInstance(tz))
Run Code Online (Sandbox Code Playgroud)
如果有人对Sybase有所了解,请您分享一下您的经验?
Bal*_*usC 26
首先,你混淆java.util与java.sql.当使用PreparedStatement#setDate()和ResultSet#getDate(),你需要java.sql.Date.类似的,使用时PreparedStatement#setTimestamp()和ResultSet#getTimestamp()需要java.sql.Timestamp.
其次,重要的是要理解它java.sql.Date仅代表日期(年,月,日),而不是更少或更多.这将映射到SQL DATE字段类型.它java.sql.Timestamp代表时间戳(年,月,日,小时,分钟,秒,毫秒),完全java.util.Date和java.util.Calendar它一样.这将映射到SQL TIMESTAMP或DATETIME字段类型.
对于时区,当数据库不存储时区信息时(因此,所有时间戳都以UTC(GMT)存储),您需要它.然后,您可以传递Calendar包含有关当前时区的信息,以便JDBC驱动程序可以将UTC时间戳调整为符合时区的时间戳.如果它是例如GMT + 1,则JDBC驱动程序将在返回之前向时间戳添加一小时.