我正在尝试使用开始和结束日期范围来查询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'之间的比赛“;
非常感谢。
答案 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")
您的另一个选择是转换为日期时间对象,这提供了更大的灵活性