Php 时间戳查询不起作用

Php 时间戳查询不起作用,php,mysql,datetime,variables,date,Php,Mysql,Datetime,Variables,Date,我的时间戳有问题。我想检查一个时间戳,如果它是在过去或未来。如果是在过去,则应该进行查询 到目前为止,我得到了一个mysql时间戳,它将由 $row = $query->fetch_object(); $timestamp = $row->time 其中包括: 2012-04-04 12:06:38 对于进一步的设置,我将使用另外两个变量: $added = $timestamp + 1209600; //what adds 14days (1209600 seconds) t

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

到目前为止,我得到了一个mysql时间戳,它将由

$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
所以我的问题是,下面的查询将一直执行,即使在14天应该过去的情况下也是如此。我知道这一点,因为我把时间戳改为1月早些时候的日期。我的问题是:

if ($check === true){
    $update = $db->query("UPDATE table SET xy='1' WHERE x='$x'");
    }

好像出了什么问题,我不知道那可能是什么

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

在将常数添加到时间戳之前,也许应该尝试将时间戳转换为和int

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


我同意barsju的观点。MySQL的结果是DateTime条目的字符串,而不是实际的时间戳。另一个将其保存在PHP中的选项是
strotime($string)将字符串转换为其时间戳。重要的是你在付账前得到一个时间戳

我会在你的例子中这样做:

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

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

这也可能会给你一些好主意:让我们在
$query->fetch_object()之前查看查询。是否使用
UNIX\u TIMESTAMP()
函数将时间戳列转换为查询中的整数?如果不是,则$timestamp是一个字符串。确切地说,这是一个转换问题。非常感谢你的帮助。
$timestamp = strtotime($row->time);