Текущее время: Чт, мар 28 2024, 20:13

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: UTC Timestamp
СообщениеДобавлено: Сб, апр 08 2017, 14:14 
Ассистент
Ассистент

Зарегистрирован:
Ср, дек 16 2015, 14:30
Сообщения: 38
Добрый день!

Подскажите, как передать в колонку типа Timestamp собственно метку времени UTC, без учета часового пояса? Имеется вот такая хранимка в Hana:
Code:
create procedure set_ts(in p_ts timestamp) as
begin
  insert into SOME_TABLE(ts) values(:p_ts);
end;


Где таблица SOME_TABLE:
Code:
CREATE COLUMN TABLE "MY_SCHEMA"."SOME_TABLE" ("ID" BIGINT CS_FIXED GENERATED BY DEFAULT AS IDENTITY,
    "TS" LONGDATE CS_LONGDATE,
    PRIMARY KEY ("ID"));



Пытаюсь через JDBC из Java сделать следующее:
Code:
    CallableStatement st = connection.prepareCall("{call set_ts(?)}");
    Date d = new Date();
    try {
      st.setTimestamp(1, new java.sql.Timestamp(d.getTime) );
      st.execute();
    } catch (Throwable e) {
      // some code
      null;
    } finally {
      st.close();
    }     


В Hana попадает всегда время в локальном часовом поясе, в данном случае - по Москве. Что нужно поправить, чтобы метка времени сохранялась таки в UTC ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: UTC Timestamp
СообщениеДобавлено: Сб, апр 08 2017, 15:53 
Ассистент
Ассистент

Зарегистрирован:
Ср, дек 16 2015, 14:30
Сообщения: 38
Разобрался. Нужно просто дополнить вызов метода параметром типа Calendar с установленным часовым поясом 'GMT':

Code:
CallableStatement st = connection.prepareCall("{call set_ts(?)}");
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
    Date d = new Date();
    try {
      st.setTimestamp(1, new java.sql.Timestamp(d.getTime), c );
      st.execute();
    } catch (Throwable e) {
      // some code
      null;
    } finally {
      st.close();
    }     


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: UTC Timestamp
СообщениеДобавлено: Ср, апр 19 2017, 12:17 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
А у вас это точно компилируется?
после d.getTime скобки не забыли? (d.getTime())


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: UTC Timestamp
СообщениеДобавлено: Пн, май 15 2017, 15:49 
Ассистент
Ассистент

Зарегистрирован:
Ср, дек 16 2015, 14:30
Сообщения: 38
AFH написал(а):
А у вас это точно компилируется?
после d.getTime скобки не забыли? (d.getTime())


Там на самом деле не Java а Scala; к виду Java привел, чтобы подобные отсутствия скобок и т.д. не смущали не знакомых со Scala) В указанном случае просто пропустил при правке. И да - компилируется и работает)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: UTC Timestamp
СообщениеДобавлено: Вт, май 30 2017, 09:24 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
А настройки часовых поясов на операционке правильные? Имеется в виду та машина на которой выполняется java-код.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: UTC Timestamp
СообщениеДобавлено: Пт, июн 02 2017, 16:19 
Ассистент
Ассистент

Зарегистрирован:
Ср, дек 16 2015, 14:30
Сообщения: 38
AFH написал(а):
А настройки часовых поясов на операционке правильные? Имеется в виду та машина на которой выполняется java-код.


Настройки правильные. Здесь дело было в другом - при передаче метки времени через JDBC нужно явно указывать часовой пояс (через экземпляр класса Calendar). Иначе будет указана зона по умолчанию (зона машины, на которой выполняется Java-код), то есть информацию об абсолютном времени мы потеряем.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB