Php 从mysql中的时间戳字段筛选日期

Php 从mysql中的时间戳字段筛选日期,php,mysql,Php,Mysql,我用自定义时区保存了表中的行。现在我只想从这些表中检索今天的数据 这就是我试过的 date_default_timezone_set('America/Los_Angeles'); $dt = new DateTime(); $today = $dt->format('Y-m-d'); //outputs 2015-12-07 $ok = mysqli_query($sqli,"SELECT * FROM `table` WHERE `date` = '$today'" ); 我的行包

我用自定义时区保存了表中的行。现在我只想从这些表中检索今天的数据

这就是我试过的

date_default_timezone_set('America/Los_Angeles'); 
$dt = new DateTime();
$today = $dt->format('Y-m-d'); //outputs 2015-12-07
$ok = mysqli_query($sqli,"SELECT * FROM `table` WHERE `date` = '$today'" );
我的行包含时间戳格式的日期,如
2015-12-07 22:42:02


但我得到的结果是空的。

在将日期传递到mysql之前,您应该将日期转换为时间戳:

date_default_timezone_set('America/Los_Angeles'); 
$dt = new DateTime();
$today = $dt->format('Y-m-d'); //outputs 2015-12-07

$ok = outputs("SELECT * FROM `table` WHERE DATE_FORMAT(date,'%Y-%m-%d')= $today" );
试试这个:

$ok = mysqli_query($sqli,"SELECT * FROM `table` WHERE DATE(date) = CURDATE()" );

根据时区转换时间:

如果$today='2015-12-07 22:42:02';您的查询将给出结果

$today='2015-12-07 22:42:02';
$ok = mysqli_query($sqli,"SELECT * FROM `table` WHERE `date` = '$today'" );
否则,请传递今天日期和下一个日期,并检索给定的值

$today='2015-12-07';
$next='2015-12-08';
$ok = mysqli_query($sqli,"SELECT * FROM `table` WHERE `date` >= '$today' and `date` <= '$next'  " );
$today='2015-12-07';
$next='2015-12-08';

$ok=mysqli\u查询($sqli,"从'table'中选择*WHERE`date`>='$today'和'date`您能给我们看一下
输出
函数的代码吗?我想这是您自己编写的函数。@br3nt:这只是mysqli_查询,脚本中没有错误……我直接在phpmyadmin中运行了查询。它返回空结果。好的。日期列肯定是日期数据吗类型还是日期时间/时间戳?@Vishnu你能试一下我的答案吗?我试过这样的东西,它可以工作$date=$dt->format('Y-m-d').“00:00:00”;和
date
>$date…有人回答了,所以我会接受。不起作用,我已经提到sql Clunn值看起来像2015-12-07 22:42:02您之前提到的列时间戳,但是如果您的列像您提到的一样,您现在可以使用()mysql函数,返回当前日期时间。是的,我还提到我使用自定义tiemzone…now()将使用服务器时区如果可能,那么也将您的列名
date
更改为other,因为
date
MySQL
的保留关键字,正如您看到的我的问题,我使用的是洛杉矶时区。如果我使用curdate,它将使用服务器timezone@Vishnu只需查看此链接,可能会有所帮助: