将今天的日期与数据库中的 UNIX 时间戳值进行比较


compare today's date with unix timestamp value in database

在数据库中,我正在使用time()存储日期值 unix 时间戳值,例如'1434952110' 现在我正在尝试将今天的值与此值进行比较,如下所示

$jobpostdate = date("Y-m-d");//today's date passing in database to compare 

查询

$sql = "SELECT jsp_title, jsp_subtitle, jsp_desc, jsp_location, jsp_date ";
$sql .= "FROM js_projects WHERE DATE(jsp_date) = '$jobpostdate' ";

尝试了上面的查询,但即使存在该值,我也找不到行,我在哪里出错了,如何比较日期值?我知道如何在php中比较,但我不知道如何签入查询,请任何人都可以提供帮助

如果我理解正确,您在 varchar 字段中有一个 unix 时间戳,您无法更改它。

如果直接比较 unix 时间戳,则只会得到与时间戳的确切秒匹配的结果。

您可以使用FROM_UNIXTIME()将时间戳转换为您实际可以使用的日期值:

WHERE DATE(FROM_UNIXTIME(jsp_date))=CURDATE()

这会将时间戳的日期部分与当前日期进行比较,从而为您提供给定日期的所有数据库条目。

注意:这可能会产生性能问题,因为每个请求都会发生大量转换。您应该真正将数据库中的 unix 时间戳转换为日期时间或日期字段。

你可以使用 PHP DateTime 类。

$today = new DateTime('now'); // Can be what ever you want, not only now
                              // see below for reference.
$jobpostdate = $today->getTimestamp();

和查询:

$sql = "SELECT jsp_title, jsp_subtitle, jsp_desc, jsp_location, jsp_date ";
$sql .= "FROM js_projects WHERE jsp_date = '$jobpostdate' ";

!PS 我无法测试它,但简而言之,它应该可以工作。

有关这个很棒的类的更多参考资料,请访问此处:http://php.net/manual/en/class.datetime.php