我会根据用户的设置手动设置时区:
SET time_zone = "+02:00";
我希望从+02:00
的角度来看今天价值的结果。
WHERE time >= CURDATE()
但我也从昨天开始获得价值。表中的值例如是:
2014-06-09 18:50:26
从00:00
时区(值存储在数据库中的时区),上面的日期是今天。但是从SET time_zone
偏好来看并非如此。 +02:00将是:
2014-06-09 20:50:26
但是昨天仍然来自用户时区。
所以我不想得到这个结果
从数据库中选择时间值工作正常。它们会转换为-02:00
。但是在WHERE子句中它不知道。
答案 0 :(得分:0)
您可以将所有时间存储在UTC中并获取用户时区:
-- creating a test table
create table times(
utc datetime
);
-- inserting some values
insert into times
values (utc_timestamp()); -- must use utc_timestamp()
-- getting data converted for desired timezone
select utc,
date_add(utc,interval '-5:00' hour_minute) as Lima,
date_add(utc,interval '1:00' hour_minute) as Madrid
from times;
+---------------------+---------------------+---------------------+
| utc | Lima | Madrid |
+---------------------+---------------------+---------------------+
| 2014-06-10 02:54:47 | 2014-06-09 21:54:47 | 2014-06-10 03:54:47 |
| 2014-06-10 02:55:46 | 2014-06-09 21:55:46 | 2014-06-10 03:55:46 |
| 2014-06-10 02:57:38 | 2014-06-09 21:57:38 | 2014-06-10 03:57:38 |
+---------------------+---------------------+---------------------+
-- You where clause would be and '-5:00' or '1:00' can be stored
-- as session variable @user_timezone
where utc >= utc_timestamp()