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-DD
和YYYY-MM-DD
之间(不包括时间)但是MySQL不会理解dd/mm/yyyy
所以你需要转换格式正确。
当您排除时间时,它会将其解释为 00:00:00
因此根据您的情况,您可能希望在 YYYY-MM-DD
和 YYYY-MM-DD 23:59:59
之间进行
注意:PHP 也无法正确解释 dd/mm/yyyy
。 PHP 日期函数理解 mm/dd/yyyy
和 dd-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
?>
请注意,这只是一个基本示例,旨在向您展示如何继续自己解决问题。随着时间的推移,您将不得不进一步优化此类代码。
我想显示我选择的日期之间的数据。
已经尝试过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-DD
和YYYY-MM-DD
之间(不包括时间)但是MySQL不会理解dd/mm/yyyy
所以你需要转换格式正确。
当您排除时间时,它会将其解释为 00:00:00
因此根据您的情况,您可能希望在 YYYY-MM-DD
和 YYYY-MM-DD 23:59:59
注意:PHP 也无法正确解释 dd/mm/yyyy
。 PHP 日期函数理解 mm/dd/yyyy
和 dd-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
?>
请注意,这只是一个基本示例,旨在向您展示如何继续自己解决问题。随着时间的推移,您将不得不进一步优化此类代码。