Сравнение дат в формате гггг-мм-дд - PullRequest
1 голос
/ 22 января 2010

Есть запрос, над которым я работаю,

... WHERE start_date >= DATE(NOW()) AND end_date >= DATE(NOW())

дата начала / окончания указана в формате даты: гггг-мм-дд

Каких результатов следует ожидать от такого запроса?

Ответы [ 5 ]

1 голос
/ 22 января 2010

И start_date, и end_date больше или равны сегодняшней дате.

Вместо использования DATE(now()) вы можете использовать CURRENT_DATE().

1 голос
/ 22 января 2010

Каких результатов следует ожидать от такого запроса?

Если start_date и end_date являются правильными полями mySQL DATE, все должно работать нормально и возвращать все записи, где start_date AND end_date - сегодняшняя дата или дата в будущем.

Если они являются полями varchar, вы можете рассмотреть возможность преобразования столбцов в поля DATE - я предполагаю, что значения останутся, но, конечно, сделайте резервную копию - или приведите их как поля DATE (медленно!):

WHERE CONVERT(start_date, DATE) => DATE(NOW()) AND CONVERT(end_date, DATE) => DATE(NOW())
0 голосов
/ 22 января 2010

Это сработает, если вы окружите start_date и end_date одинарными кавычками. Это даст вам все записи, где дата начала и дата окончания находятся в будущем.

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

Это должно работать нормально, так как вы можете использовать NOW () для сравнения дат.

Однако вам не нужно переносить NOW () внутри DATE - он будет работать как есть, пока вы используете один из типов полей, связанных со временем (DATE, DATETIME, TIMESTAMP и т. Д.).

Как таковой, вы должны просто иметь возможность использовать ...

WHERE start_date >= NOW() AND end_date >= NOW()
0 голосов
/ 22 января 2010

вы будете сравнивать даты на уровне детализации даты (то есть времени не учитывается). все строки, в которых день наступил или позже, чем сегодня (NOW ()), при условии, что start_date и end_date являются столбцами даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...