Как использовать синтаксис mysql "LIKE" с отметкой времени? - PullRequest
3 голосов
/ 26 января 2010

Я хочу, чтобы мои пользователи могли искать в базе данных строку, которая была отправлена ​​в определенный день. Дата вводится в поле базы данных с помощью функции date(), что замечательно, но когда я использую функцию php strtotime, конечно, даты не совсем совпадают.

Есть ли какая-нибудь умная функция mysql, которая может помочь мне в этом?

Ответы [ 3 ]

3 голосов
/ 26 января 2010

Вы можете использовать функцию MySQL DATE () для извлечения части даты из отметки времени:

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

Если у вас есть проблема с отправкой '2010-01-25' из PHP, вы можете использовать PHP * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * D * * * * '' с параметром '' Y-m-d '' в качестве параметра, чтобы получить только часть даты.

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

Если внимательно присмотреться к вашему вопросу, кажется, вам понадобятся оба. Сначала используйте функцию даты в PHP, чтобы получить только часть даты, а затем используйте дату MySQL, чтобы сопоставить только эти записи.

3 голосов
/ 26 января 2010

У меня была проблема с этим раньше.

Лучше всего сгенерировать дату начала и окончания, а затем использовать функцию МЕЖДУ.

Так что-то вроде этого:

$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 ()

Надеюсь, это поможет:)

0 голосов
/ 26 января 2010

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')
...