ResultSet.getTimestamp (“дата”) по сравнению с ResultSet.getTimestamp (“дата”, Calendar.getInstance(tz))

java.util.Date, java.util.Timetamp были, кажется, вызывает большой беспорядок для многих. В StackOverflow существует столько вопросов, К сожалению, моим вопросом является скрученный бит.

Существует 2 API JDBC. Как они должны работать? Была ли среди RDBMS’es какая-либо непротиворечивость?

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

Если у кого-то есть знание в Sybase, Вы могли бы обменяться своим опытом?

10
задан BalusC 6 April 2010 в 12:48
поделиться

1 ответ

Во-первых, вы путаете 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 добавит один час к метке времени перед возвратом.

26
ответ дан 3 December 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: