3

我想让我的用户在数据库中搜索某一天提交的行。使用该date()功能将日期输入数据库中的字段非常好,但是当我使用 phpstrtotime功能时,日期当然不完全相同。

是否有一些聪明的 mysql 功能可以帮助我解决这个问题?

4

3 回答 3

4

我之前遇到过这个问题。

您最好生成开始和结束日期,然后使用 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()

希望这可以帮助 :)

于 2010-01-25T21:10:20.657 回答
3

您可以使用 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 仅匹配那些记录。

于 2010-01-25T21:12:20.427 回答
0

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')
于 2010-01-25T21:12:08.557 回答