如何使用带有时间戳的mysql“LIKE”语法?

时间:2010-01-25 21:06:50

标签: php mysql date strtotime

我想允许我的用户在数据库中搜索某一天提交的行。使用date()函数将日期输入数据库中的字段,这很好,但是当我使用php strtotime函数时,日期并不完全相同。

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

3 个答案:

答案 0 :(得分:3)

之前我遇到过这个问题。

您最好生成开始日期和结束日期,然后使用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从数据库中提取日期并附加时间戳 - 取决于您使用日期的方式()

希望这会有所帮助:)

答案 1 :(得分:3)

您可以使用MySQL的DATE()函数来提取时间戳的日期部分:

select ... from table ... where DATE(date_column) = '2010-01-25';

如果您在使用PHP提交“2010-01-25”时遇到问题,可以使用PHP的date function和“Y-m-d”作为参数来获取日期部分。

$d = date('Y-m-d', strtotime(...));

仔细观察你的问题,你似乎需要这两个。首先使用PHP的日期函数只获取日期部分,然后使用MySQL的日期仅匹配那些记录。

答案 2 :(得分: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')