MySQL日期和时间函数中使用的时区是否会导致冲突/问题?

时间:2011-09-25 21:58:51

标签: php mysql cron

我有一个网站,允许访问者查看内容,并可以选择注册和登录(这使他们有权提交内容)。

  • 每当用户提交内容时,我在INSERT INTO表中执行content查询,我使用UNIX_TIMESTAMP()将时间戳存储在content_timestamp列中(这是提交内容的时间。)

  • 我还允许用户从usercp中的下拉菜单中选择一个时区(支持来自http://php.net/manual/en/timezones.php的所有时区) - 以及{{1}中的一列(user_timezone) } table得到users'd,所以所有显示的日期都调整为(如果选择)。

  • 显示内容的页面之一我显示格式化日期(提交内容的时间) - 如果他们没有登录或登录而没有选择时区(在usercp中)我格式化它在GMT,否则我在那里使用选定的时区,例如:


UPDATE

现在一切都很好,但现在我打算每周和每月安排一个cronjob(这将是每周精选和每月精选内容),这将访问一个将执行<?php if (!is_logged_in() || is_logged_in() && empty($row['user_timezone'])) { echo gmdate('d/m/y', $row['content_timestamp']) . ' GMT'; //in GMT } else { date_default_timezone_set($row['user_timezone']); echo date('d/m/y', $row['content_timestamp']); //use the users timezone } ?> 查询的php文件(评分最高的内容)并将其添加到INSERT INTO表格 - 以及添加时的featuredUNIX_TIMESTAMP() - 。)

cronjob设置为每周第一天上午12点(格林尼治标准时间午夜)和每个月的第一天(格林威治标准时间午夜12点)访问php文件。

......现在遇到问题:

我通过使用featured_timestamp日期和时间函数比较时间戳来显示精选内容(例如下面的示例将返回每周特色内容):

MySQL

这会导致任何时区冲突/问题,因为cronjob正在访问GMT中的文件而我不知道时区使用SELECT * FROM featured WHERE WEEK(FROM_UNIXTIME(featured_timestamp), 1) = WEEK(UNIX_TIMESTAMP(), 1) AND FROM_UNIXTIME(featured_timestamp, '%Y %M') = FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %M') MySQLWEEK() (只是好奇,因为这意味着像上面这样的比较查询会产生不正确的结果)?

0 个答案:

没有答案