使用convert_tz进行日期时间比较



我有一个表,表中的日期/时间值分别拆分为日期和int字段,而不是单个日期时间。每一行都有一个独特的日期和小时组合,因此每天有24行。

当我需要在where语句中考虑这些时区调整时,我的挑战是选择与不同时区的用户相关的数据。例如,如果用户比服务器时间提前了两个小时,where语句需要反映它:

 ...where concat(theDate,' ',theHour) > convert_tz(concat('2012-01-01',' ','00:00:00'), '-8:00', '-6:00')

例如,太平洋标准时间到中心时间。但很明显,我不能使用convert_tz或在where子句中计算它的值。

我想使用convert_tz,而不是笨拙的DATE_ADD或其他什么。能做些什么?

也许我错了,你可以在where子句中使用convert_tz。以下是核心问题:

select *, convert_tz(concat(theDay,' ',theHour), '-8:00', '-8:00') 'dayTZ' 
from stats 
where convert_tz(concat(theDay,' ',theHour), '-8:00', '-8:00') > '2011-01-25 05:00:00';

上面仍然返回早于5的小时值。

尝试添加str_to_date:

select *, convert_tz(sconcat(theDay,' ',theHour), '-8:00', '-8:00') 'dayTZ' 
from stats 
where str_to_date(convert_tz(concat(theDay,' ',theHour), '-8:00', '-8:00'), '%Y-%m-%d %H:%i:%s') > str_to_date('2011-01-25 05:00:00', '%Y-%m-%d %H:%i:%s');

相关内容

  • 没有找到相关文章

最新更新