Текущее время: Вт, окт 17 2017, 10:04

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




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

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

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


Где таблица SOME_TABLE:
Код:
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 сделать следующее:
Код:
    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, 16:53 
Ассистент
Ассистент

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

Код:
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, 13:17 
Специалист
Специалист

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


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

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


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


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

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


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

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


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


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

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


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

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


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

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