PHP - 在dd / mm / yyyy之间搜索SQL,同时具有yyyy-mm-dd hh:mm:ss

时间:2015-10-16 02:35:38

标签: php mysql datetime search between

我想显示从我选择的日期之间的数据。

已经尝试{{1}} 对于CONVERT,我仍然没有得到它,因为我们找不到那个有完整查询的人。

作为我的标题,我的sql字段是日期时间类型,格式为' yyyy-mm-dd hh:mm:ss' 虽然在PHP我有格式dd / mm / yyyy

请仅在PHP代码和SQL查询中以完整模式回答这个问题。

谢谢:)

2 个答案:

答案 0 :(得分:1)

您可以在MySQL中YYYY-MM-DDYYYY-MM-DD之间(不包括时间)进行操作,但MySQL无法理解dd/mm/yyyy,因此您需要将其转换为正确的格式。

当您排除时间时,它会在00:00:00对其进行解释,因此根据您的具体情况,您可能希望在YYYY-MM-DDYYYY-MM-DD 23:59:59之间进行

注意:PHP也不能正确解释dd/mm/yyyy。 PHP日期函数理解mm/dd/yyyydd-mm-yyyy

答案 1 :(得分:1)

正如评论者所说,你首先必须将你的dd / mm / yyyy格式化日期转换为MySQL喜欢的日期,即YYYY-mm-dd H:i:s

那么,你如何将你的日期转换为MySQL友好日期?做这样的事情:

<?php
$datefrom = '25/06/2015';
$dateend = '20/10/2015';

// create an array with dd, mm and yyyy
$splitFrom = explode('/', $datefrom);
$splitTo = explode('/', $dateend);

// mktime takes hour, minutes, seconds, month, day, year arguments
// create timestamp using mktime and pass it to date and format it to
// mysql friendly timestamp
$mysqlFrom = date('Y-m-d H:i:s',  mktime(0, 0, 0, $splitFrom[1], $splitFrom[0], $splitFrom[2]));
$mysqlTo = date('Y-m-d H:i:s',  mktime(0, 0, 0, $splitTo[1], $splitTo[0], $splitFrom[2]));

// echo sprintf("From %s and To %s", $mysqlFrom, $mysqlTo);

// this is where you would do your SQL statement and substitute $mysqlFrom and $mysqlTo dates

?>

请注意,这只是一个基本示例,向您展示如何自行解决问题。随着时间的推移,您将不得不进一步优化此类代码。