日期范围时间查询

时间:2013-07-01 22:01:13

标签: php mysql

我正在尝试使用开始和结束日期范围来查询MySQL。目前我的变量是:

$begin = $_POST['begin'];
$begin = date('Y/m/d H:i:s', strtotime($begin));
$end = $_POST['end'];
$end = date('Y/m/d H:i:s',strtotime($end));

strtotime($begin)产生一个可定义的时间戳'00:00:00'。但是,我希望strtotime($end)输出'11:59:59',以便用户可以使用表单中的日期范围查询特定日期。有人可以说明如何将时间设置为'23:59:59',请记住我希望使用表单中的$end日期变量吗?

我的PHP查询是:

  

“SELECT OrderId,Qty,Del,Timestamp FROM Orders WHERE Timestamp   '$ begin'和'$ end'之间的比赛“;

非常感谢。

3 个答案:

答案 0 :(得分:0)

strtotime只生成一个整数时间戳,所以你可以做

$end = date('Y/m/d H:i:s', strtotime($end) + 86400 - 1);

添加一天以获得“明天”,然后删除一秒钟以获得您开始之日午夜之前的那一刻。

或更简单:

$end = date('Y/m/d', strtotime($end)) . ' 11:59:59';

生成适当的日期,然后自己手动添加时间部分。

答案 1 :(得分:0)

如果你想硬编码时间,只需连接它:

$end = date('Y/m/d', strtotime($end)) . ' 11:59:59';

答案 2 :(得分:0)

strtotime返回时间戳。你可以添加86399(1天-1秒)

或者你可以使用strtotime +语法strtotime($end . "+ 23 hours")

或者如果变量中没有时间信息,您可以自己添加strtotime($end . "+ 23:59")

您的另一个选择是转换为日期时间对象,这提供了更大的灵活性