我正在编写一个查询,该查询只返回当天的数据,并希望使用结束时间和开始时间。
像这样。
$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
答案 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