Dev*_*ner 2 php mysql datetime
平台: PHP和mySQL
我将日期+时间存储在数据库中,格式如下:date("Ymd H:i:s").我在数据库中拥有的值的示例是:2010-01-05 07:36:33.在我的脚本中,我将时区设置为date_default_timezone_set("America/Chicago");
问题:
我在某处读到了UNIX_TIMESTAMP,我在查询中使用了它.来自DB的日期值的UNIX_TIMESTAMP的值似乎与strotime(DB date Value)不同.
例:
请考虑我的数据库中日期列的DB值之一是2010-01-05 07:36:33 现在,如果我按以下方式获取此日期:
$result = mysql_query("SELECT date, UNIX_TIMESTAMP(date) AS ut_date FROM table");
$row = mysql_fetch_row($result);
//The result of this is:
$row['date'] = 2010-01-05 07:36:33
$row['ut_date'] = 1262657193
strtotime($row['date']) gives 1262698593
Run Code Online (Sandbox Code Playgroud)
对于我在我的应用程序中的进一步计算,我需要使用strtotime(日期).我有很多比较这样做.如果UNIX_TIMESTAMP(date)与strtotime(date)相同,我的问题就解决了.我需要使用的示例查询之一是:
$gap = 1; // time in minutes
$tm2 = date ("Y-m-d H:i:s", mktime (date("H"),date("i")-$gap,date("s"),date("m"),date("d"),date("Y")));
$target = strtotime($tm2);
$result2 = mysql_query("UPDATE table2 SET stat = 0 WHERE UNIX_TIMESTAMP(today_login_time) < $target ");
Run Code Online (Sandbox Code Playgroud)
以上是给我错误的结果.如果我尝试在上面的查询中用strtotime替换UNIX_TIMESTAMP,它会给我一个错误,因为函数strtotime似乎是PHP函数而不是各自的mySQL函数.strtotime有相应的mySQL功能吗?我该如何解决上述问题?解决上述问题的代码非常受欢迎.
先感谢您.
可能MySQL服务器和php实例的时区不同.例如
echo date('Y-m-d H:i:s T', 1262657193);
在我的机器上打印2010-01-05 03:06:33 CET(注意CET时区,即UTC + 1),而MySQL服务器将相同的unix时间戳解释为2010-01-05 07:36:33
请参阅http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html
和http://docs.php.net/datetime.configuration#ini.date.timezone
| 归档时间: |
|
| 查看次数: |
9580 次 |
| 最近记录: |