2016-11-18 148 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 

我想获得这些值来比较他们与我目前的时间。那么,如果它是目前“二零一六年十一月一十七日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

相关问题