0

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

到目前为止,我得到了一个 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'");
    }

有些事情似乎是错误的,我不知道那可能是什么。

4

2 回答 2

1

在我看来,您尝试添加字符串和 int。

也许您应该在将常量添加到它之前尝试将时间戳转换为和 int。

当您使用例如以下TO_SECONDS()方法选择时间戳时,您可以直接在查询中执行此操作:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

于 2012-04-04T23:42:21.483 回答
1

我同意barsju。MySQL 的结果是 DateTime 条目的字符串,实际上不是时间戳。将其保留在 PHP 中的另一个选项是strtotime($string);将字符串转换为其时间戳。重要的是您在检查之前获得时间戳。

我会在你的例子的这一行做:

$timestamp = strtotime($row->time);

我相信还有其他几种方法可以让 MySQL 也返回时间戳。

于 2012-04-04T23:49:33.593 回答