【发布时间】:2011-01-01 16:10:26
【问题描述】:
平台: PHP & mySQL
我以以下格式将日期+时间存储在数据库中:日期(“Y-m-d H:i:s”)。我的数据库中的一个值的示例是:2010-01-05 07:36:33。在我的脚本中,我将时区设置为date_default_timezone_set("America/Chicago");
问题:
我在某处读到了 UNIX_TIMESTAMP,并在查询中使用了它。 UNIX_TIMESTAMP 对来自数据库的日期值的值,似乎与 strotime(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
对于我的应用程序中的进一步计算,我需要使用 strtotime(date)。我有很多比较可以这样做。如果 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 ");
以上给出了不正确的结果。如果我尝试在上述查询中用 strtotime 替换 UNIX_TIMESTAMP,它会给我一个错误,因为函数 strtotime 似乎是 PHP 函数而不是相应的 mySQL 函数。 strtotime 是否有相应的 mySQL 函数?我该如何解决上述问题? 解决上述问题的代码非常感谢。
提前谢谢你。
【问题讨论】: