我想让我的用户在数据库中搜索某一天提交的行。使用该date()
功能将日期输入数据库中的字段非常好,但是当我使用 phpstrtotime
功能时,日期当然不完全相同。
是否有一些聪明的 mysql 功能可以帮助我解决这个问题?
我之前遇到过这个问题。
您最好生成开始和结束日期,然后使用 BETWEEN 函数。
所以是这样的:
$start_date = "2009-01-01 00:00:00";
$end_date = "2009-01-01 23:59:59";
$sql = "SELECT * FROM table WHERE date BETWEEN '$start_date' AND '$end_date' AND id = 'x';
当然,您只需使用 strtotime 从数据库中提取日期并附加时间戳 - 取决于您如何使用 date()
希望这可以帮助 :)
您可以使用 MySQL 的DATE()函数来提取时间戳的日期部分:
select ... from table ... where DATE(date_column) = '2010-01-25';
如果您从 PHP 提交 '2010-01-25' 时遇到问题,您可以使用 PHP 的date 函数和 'Ymd' 作为参数来仅获取日期部分。
$d = date('Y-m-d', strtotime(...));
仔细查看您的问题,您似乎需要这两个。首先使用 PHP 的 date 函数仅获取日期部分,然后使用 MySQL 的 date 仅匹配那些记录。
PHP:
$timestamp_from_php = strtotime('December 25, 2009');
SQL:
select
`fields`
from
Table t
where
date_format('Y-m-d', t.`datetime_field`) = date_format('Y-m-d', '$timestamp_from_php')