2013-03-27 84 views
0

我正在尝试为每周的特定一天做一个过滤器。不正确返回的Mysql工作日

我的PHP代码,包括像

Select * from table_name where Weekday(DATE(project_surveydate)) = 0; 

如果我用在phpMyAdmin上面的行,它返回正确的记录是在周一的所有记录。

但是,当我通过我的PHP脚本运行该代码时,它会在周日返回一些记录。

project_surveydate数据类型是时间戳。

我注意到它只返回21:00:00或更多的星期日。

例如,如果project_surveydate是(星期日)2012-05-03 13:25:14,它不会被包含它。如果是2012-05-03 21:25:14,它将包含在结果中。

我真的不知道是什么造成这种情况。 任何帮助将不胜感激。

感谢

+2

您的时区是什么? – RedBaron 2013-03-27 14:56:17

+2

这些例子合法吗? 2012-05-03是星期四。 – Octopus 2013-03-27 15:05:37

+0

我的时区是EST。似乎搜索是基于用户当前的时区。所以我需要根据用户时区相应地调整服务器时区 – byebyebyezzz 2013-03-27 15:23:01

回答

0

它看起来像你的服务器的时区影响的结果。您可以设置在每个连接的时区:

SET time_zone = '+00:00'; 

MySQL的TIMESTAMP值从当前时区转换为UTC存储,并从UTC回到当前时区进行检索。您可以通过几种方式更改mysql的默认时区,这里记录如下:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html

+0

时区未存储在MySQL日期时间字段中。 re:你的编辑:那么如果它从当前设置的时区转换回来,为什么它们不一样呢? – Octopus 2013-03-27 15:06:49

+0

不,但检索时间戳时使用服务器时区。 – SteveP 2013-03-27 15:07:54

+0

我的预感也是时区正在做一些有趣的事情,但这应该会影响_both_ phpMyAdmin和脚本 – RedBaron 2013-03-27 15:09:23