Запросите mysql DATETIME с заданным часовым поясом в Java - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь запросить mysql DATETIME из Java.Я знаю часовой пояс сервера, но я не могу вытащить дату и время из часового пояса, как я ожидал.

ResultSet rs = st.executeQuery(...);

Date d1=rs.getTime(i, Calendar.getInstance(TimeZone.getTimeZone("UTC")));
Date d2=rs.getTime(i, Calendar.getInstance(TimeZone.getTimeZone("PST")));

System.out.println("d1: "+d1.getTime());
System.out.println("d2: "+d2.getTime());

Это оставляет меня с:

d1: 40258000
d2: 40258000

AmЯ пропустил что-то простое здесь?

ResultSet.getDate() действительно учитывает Календарь.Но я не могу использовать его, потому что он усекает информацию о времени.Все еще странно, что ResultSet.getTime() не будет обрабатывать преобразования часовых поясов.

Ответы [ 3 ]

0 голосов
/ 21 февраля 2012

getTime в классе Date возвращает время эпохи в соответствии с http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Date.html, поэтому оно будет корректировать ваш часовой пояс.Я думаю, что на этой странице вы должны использовать календарь, скорректированный по часовому поясу, чтобы узнать местное время.

0 голосов
/ 21 февраля 2012

Альтернативным подходом было бы позволить серверу MySQL преобразовать часовой пояс:

SELECT CONVERT_TZ(timefield,'PST','UTC') AS tf
Например,

преобразует значение DATETIME в поле timefield из PST в время UTC (и затем возвращает его как tf).

0 голосов
/ 21 февраля 2012

Документация гласит:

Этот метод использует данный календарь для построения соответствующего значения в миллисекундах для времени, если базовая база данных не хранит информацию о часовом поясе.

Так, возможно, база данных хранит информацию о часовом поясе в этом случае?

Как выглядит ваше значение в базе данных и что оно должно представлять?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...