时间戳查询不起作用

时间:2012-04-04 23:34:15

标签: php mysql datetime variables date

我有时间戳问题。我想查看时间戳,如果是过去或将来。如果是在过去,则应该进行查询。

到目前为止,我得到了一个将由

获取的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'");
    }
似乎有些事情是错误的,我不知道那可能是什么。

2 个答案:

答案 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返回时间戳。