我需要根据创建日期查询记录。比如说,我必须查询在两个日期2012-03-01 00:00:00
到2012-03-03 23:59:00
之间创建的记录。我在查询中使用次数,如
$from_date = '01/03/2012';
$to_date = '03/03/2012';
$from = date('Y-m-d 00:00:00', strtotime($from_date));
$to = date('Y-m-d 23:59:00', strtotime($to_date));
查询在localhost中工作正常,因为我的国家/地区有我的数据库。但它在实时网站上运行不正常。由于时区不同,因此创建的日期会自动更改为
$from = 2012-03-01 17:00:00
$to = 2012-03-03 16:59:00
即,它会改变到它的时区。我尝试将日期转换为该时区。但它没有用。现在,我该怎样做才能为查询提供正确的时间?
答案 0 :(得分:2)
在调用date(...)
方法之前,您应该致电date_default_timezone_set
。
值得注意的是,自PHP 5.1.0开始,如果时区无效,则每次调用日期/时间函数都会生成E_NOTICE,如果使用系统设置或TZ环境变量,则会生成E_WARNING消息,所以值得看看你的错误...
答案 1 :(得分:2)
我认为这是你需要做的事情
$from_date = '01/03/2012';
$to_date = '03/03/2012';
$from = date('Y-m-d H:i:s', strtotime($from_date." 00:00:00"));
$to = date('Y-m-d H:i:s', strtotime($to_date." 23:59:00"));
答案 2 :(得分:1)
上面的答案是正确的,但我想就你的问题给出不同的观点。由于您只对正常的日期而不是小时感兴趣,因此您可以使用日期$from_date
和$to_date
直接在sql查询中格式化存储在db中的日期,如下所示:
DATE_FORMAT(column_with_date,'%d/%m/%Y')