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

时间:2014-03-03 02:15:15

标签: 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

2 个答案:

答案 0 :(得分:0)

不是100%肯定你想要达到的目标,但是如果你想在过去24小时内获得订单(注意:不是最后一天),这样做:

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

虽然我认为用纯SQL做这件事比较简洁。

答案 1 :(得分:0)

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');
       ";
?>

请注意,我必须将record_ts转换为(MySQL)日期,因为该列被定义为时间戳,我还必须转换日期字符串。

。 。

Carl Maskham,您的评论可能对最新版本的MySQL有效。

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