2016-11-18 4 views
0

Я использую MySQL для хранения моих данных. Я записал даты с различным смещением в соответствии с каждым часовым поясом. Важное значение для этих дат - только «эффективное» время. Вот пример:Получить дату без смещения

date1 = "Thu, 27 Oct 2016 07:00:00 CEST +02:00" 
# I want to get 700 
date2 = "Thu, 27 Oct 2016 22:00:00 CEST +02:00" 
# I want to get 2200 

Я хотел бы получить эти значения, чтобы сравнить их с моим текущим временем. Тогда, если это в настоящее время "2016-11-17 10:12:00 +0100", я хотел бы сравнить по п where:

"1012" > "2200" 
# or 
"1012" > "700" 

Вот подделкой значение записи:

# my_table 
# | id | my_hour 
# | XX | "Thu, 27 Oct 2016 07:00:00 CEST +02:00" 
# | XY | "Thu, 27 Oct 2016 22:00:00 CEST +11:00" 

Вот мой код:

hour = Time.zone.now 
# "2016-11-18 21:10:00 +0100" 
where("CAST(DATE_FORMAT(my_hour,'%H%i') AS UNSIGNED) < ?", hour.strftime("%H%M").to_i) 
# => Get XX record? 
+0

проверить эту стратегию. Гораздо проще: http://stackoverflow.com/a/32068755/267540 – e4c5

+0

Настоящая история. К сожалению, мне приходится иметь дело с часовым поясом на этой таблице. На данный момент у меня нет другого выбора. Вот почему я задаю этот вопрос, но ваш ответ прав в других обстоятельствах. Благодарю. – BriceB

ответ

0

Использование strftime для форматирования даты в Rails.

hour = Time.zone.now 

MyTable.where("cast(strftime('%H%M', my_hour) as int) < ?", hour.strftime("%H%M").to_i) 

здесь MyTable ваша модель, my_hour ваша колонка дата и hour является текущее время.

+0

Спасибо за ваш ответ. Это не работает. 'strftime' или' as int', кажется, есть некоторые проблемы, которые нужно выполнить. Я попробовал с 'DATE_FORMAT' вместо' strftime', но все еще не работал. – BriceB

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