2014-12-17 3 views
0

У меня есть поле в Postgresпреобразовать метку времени UNIX в Postgres эквивалентной метки времени в Java

Column  |   Type   
created_at | timestamp without time zone 

Я отметка времени Unix хранится в длинных в Java

long createdAtTime = data.getcreatedAtTime(); 

Я хочу, чтобы преобразовать его в отметка времени в Java, так что я могу хранить с activejdbc в Postgres

Я попытался следующий

Date convertedTime = new Date(createdAtTime*1000L); 
record.set("created_at", convertedTime); 
record.saveIt(); 

Но я получаю следующее сообщение об ошибке:

Can't infer the SQL type to use for an instance of java.util.Date. Use setObject() with an explicit Types value to specify the type to use. 

Должен ли я использовать другой способ, чтобы преобразовать дату первого?

+3

Вам нужно использовать 'java.sql.Timestamp' не' java.util.Date'. –

+0

Возможный дубликат [Какой самый рекомендуемый способ хранения времени в PostgreSQL с помощью Java?] (Http://stackoverflow.com/questions/6627289/what-is-the-most-recommended-way-to-store-time -в-PostgreSQL-используя-Java). И [этот] (http://stackoverflow.com/questions/18132219/saving-timestamps-in-postgres-based-on-java-dates). И другие. –

+0

Кстати, вы должны использовать TIMESTAMP WITH TIME ZONE, а не БЕЗ. Per [сообщение от Дэвида Э Уилера] (http://justatheory.com/computers/databases/postgresql/use-timestamptz.html) (эксперт по Postgres). –

ответ

0
java.sql.Timestamp timestamp = new Timestamp(createdAtTime*1000L); 
record.set("created_at", convertedTime); 
record.saveIt(); 

Вместо использования вы попытались использовать java.sql.Date. Его родной тип SQL.

+2

Этот ответ неверен. A [java.sql.Date] (http://docs.oracle.com/javase/8/docs/api/java/sql/Date.html) предназначен для значения даты только без времени суток. Не то, что требует Вопрос. –

+0

'java.sql.Date' укоротит время. –

+0

@BoristheSpider мы можем использовать для этого java.sql.Timestamp –

Смежные вопросы