我有时间戳问题。我想查看时间戳,如果是过去或将来。如果是在过去,则应该进行查询。
到目前为止,我得到了一个将由
获取的mysql-timestamp$row = $query->fetch_object();
$timestamp = $row->time
包含:
2012-04-04 12:06:38
对于进一步的设置,我使用另外两个变量:
$added = $timestamp + 1209600; //what adds 14days (1209600 seconds) to my db-timestamp
$check = $added < time(); //what checks if the 14days have passed or not
好的,如果我用var_dump测试所有这些,它将为每个返回:
string(19) "2012-04-04 12:06:38" at var_dump($timestamp)
int(1211612) at var_dump($added)
bool(true) at var_dump($check)
所以我的问题是,即使在14天应该通过的情况下,也会一直执行以下查询。我知道因为我在1月份将时间戳更改为更早的日期。这是我的疑问:
if ($check === true){
$update = $db->query("UPDATE table SET xy='1' WHERE x='$x'");
}
似乎有些事情是错误的,我不知道那可能是什么。
答案 0 :(得分:1)
在我看来,你试图添加字符串和int。
也许你应该在将常量添加到它之前尝试将时间戳转换为int。
当您使用TO_SECONDS()
方法选择时间戳时,可以直接在查询中执行此操作:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
答案 1 :(得分:1)
我同意barsju。 MySQL的结果是DateTime条目的字符串,实际上不是时间戳。将其保留在PHP中的另一个选项是strtotime($string);
,它将字符串转换为其时间戳。重要的是你在检查前得到一个时间戳。
我会在你的例子的这一行上做到这一点:
$timestamp = strtotime($row->time);
我相信还有其他一些方法可以让MySQL返回时间戳。