Текущее время: Ср, апр 24 2024, 23:39

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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