ResultSet.getTimestamp(“date”) vs ResultSet.getTimestamp(“date”, Calendar.getInstance(tz))

爱⌒轻易说出口 提交于 2019-12-20 20:01:02

问题


java.util.Date, java.util.Timetamp were seems to be causing great confusion for many. Within StackOverflow there are so many questions, Unfortunately my question is bit twisted.

There are 2 JDBC api. How they should perform? Was there any consistencies among RDBMS’es?

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

If someone has knowledge in Sybase, could you please share your experience?


回答1:


First, you're confusing java.util with java.sql. When using PreparedStatement#setDate() and ResultSet#getDate(), you need java.sql.Date. Analogous, when using PreparedStatement#setTimestamp() and ResultSet#getTimestamp() you need java.sql.Timestamp.

Second, it's important to understand that java.sql.Date represents solely the date (year, month, day) and nothing less or more. This is to be mapped to a SQL DATE field type. The java.sql.Timestamp represents the timestamp (year, month, day, hour, minute, second, millisecond), exactly as the java.util.Date and java.util.Calendar does. This is to be mapped to a SQL TIMESTAMP or DATETIME field type.

As to the timezones, you need it when the database does not store timezone information (thus, all timestamps are stored in UTC (GMT)). You can then pass a Calendar in which contains information about the current timezone, so that the JDBC driver can adjust the UTC timestamp to the timestamp conforming the timezone. If it is for example GMT+1, then the JDBC driver will add one hour to the timestamp before returning.



来源:https://stackoverflow.com/questions/2584695/resultset-gettimestampdate-vs-resultset-gettimestampdate-calendar-getins

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!