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

PHP - SQL search between dd/mm/yyyy while having yyyy-mm-dd hh:mm:ss

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

已经尝试过SELECT * from myTable WHERE myDATE BETWEEN LIKE 'datefrom%' AND LIKE 'dateend%' 对于 CONVERT,我仍然不明白,因为还没有找到对此有完整查询的。

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

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

谢谢:)

你可以在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

正如评论者所说,您首先必须将 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

?>

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