0

У меня есть некоторые даты хранятся в виде строк в postgresdbдата Разбор Postgres хранится в виде строки, включая смещение часового пояса

"Fri, 24 Jun 2016 04:13:26 -0700" 

Я хочу, чтобы лечить эти даты как даты.

я могу использовать

to_timestamp(date,'Dy, DD Mon YYYY HH24:MI:SS') 

Но я не могу работать, как иметь дело с часовым поясом. в качестве параметра смещения появляется OF.

Если я использую

to_timestamp(date, 'Dy, DD Mon YYYY HH24:MI:SS OF') 

Запрос висит. Я не могу понять, что я там делаю.

Примечание: Я использую activerecord и рельсы. поэтому запрос на самом деле

Model.all.order("to_timestamp(date,'Dy, DD Mon YYYY HH24:MI:SS OF') DESC") 
+0

Может быть? 'Time.zone.parse (« Пт, 24 июн 2016 04:13:26 -0700 »). To_date'. просто догадка. Проверьте: http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html –

+0

PostgreSQL достаточно умен: 'select timestamp with time zone 'Fri, 24 Jun 2016 04:13:26 -0700';' возвращает ' 2016-06-24 14: 13: 26 + 03' для моего местоположения. – Abelisto

+0

@Abelisto Есть ли способ сделать это с помощью метода to_timestamp? Проблема в том, что я пытаюсь сделать это с порядком не с выбором. – Carpela

ответ

2

PostgreSQL поддерживает несколько форматов ввода даты/времени/временных меток. See the reference.

Ваш формат также поддерживается, поэтому можно использовать простой тип литья. Есть три способа, а также два обозначения типа в PostgreSQL:

timestamp with time zone или короче timestamptz

и приведение типа, как:

cast('Fri, 24 Jun 2016 04:13:26 -0700' as timestamp with time zone) 
timestamp with time zone 'Fri, 24 Jun 2016 04:13:26 -0700' 
'Fri, 24 Jun 2016 04:13:26 -0700'::timestamptz 

который равен. Вы можете использовать любые комбинации в зависимости от вашего вкуса.

Так, отвечая на ваш вопрос:

Model.all.order("date::timestamptz DESC") 

должен сделать трюк.

0

Вы можете попробовать этот метод

"Пт, 24 июня 2016 4:13:26 -0700" .to_datetime

Надежда, это поможет вы.

+0

Конечно, я могу это сделать, но я могу сделать это только после того, как верну запрос. то есть я надеялся на что-то, что я мог бы сделать исключительно с activerecord. – Carpela

+0

Вы хотите сказать, что вам нужно это значение по порядку по запросу? –

+0

Это именно то, что я пытаюсь сделать. – Carpela