Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于MySQL查询的PHP中的当前和前一天_Php_Mysql - Fatal编程技术网

用于MySQL查询的PHP中的当前和前一天

用于MySQL查询的PHP中的当前和前一天,php,mysql,Php,Mysql,我正在编写一个查询,它应该只返回当天的数据,并希望使用结束时间和开始时间 像这样的 $endtime = date ("Y-m-d H:i:s"); $starttime = date ("Y-m-d H:i:s") - 1; // Not working.. $sql = "select * from tbl_order where transdate between $starttime and $endtime"; 你能帮忙吗 RJ无法100%确定您试图实现的目标,但如果您希望在过去

我正在编写一个查询,它应该只返回当天的数据,并希望使用结束时间和开始时间

像这样的

$endtime = date ("Y-m-d H:i:s");
$starttime = date ("Y-m-d H:i:s") - 1; // Not working..


$sql = "select * from tbl_order where transdate between $starttime and $endtime";
你能帮忙吗


RJ

无法100%确定您试图实现的目标,但如果您希望在过去24小时内获得订单(注意:不是最后一天),则可以:

$endtime = date ("Y-m-d H:i:s");
$starttime = date ("Y-m-d H:i:s", (time() - (60*60*24)));

尽管我认为使用纯SQL更简洁。

关键字
between
对日期值而不是字符串进行操作

<?php
$jan = '2014-01';
$feb = '2014-02';
$sql = "select record_ts from table where date(record_ts) 
        between str_to_date('$jan', '%Y-%m')
            and str_to_date('$feb', '%Y-%m');
       ";
?>

date(transdate)=CURDATE()
?另请参见单个时间点之间的@Dagon@如果这是他想要的,那么纯sql版本是:
transdate>NOW()-间隔1天
mysql> select record_ts from table where date(record_ts)
       between '2014-01'
           and '2014-02' ; 
Empty set, 2 warnings (0.01 sec)

mysql> select record_ts from table where date(record_ts) 
        between str_to_date('2014-01', '%Y-%m')
            and str_to_date('2014-02', '%Y-%m');
(...)
1119 rows in set (0.01 sec)

$ mysql --version 
mysql  Ver 14.14 Distrib 5.1.70, for pc-linux-gnu (x86_64) using readline 5.1