Как я могу найти любой день в месяце? - PullRequest
2 голосов
/ 16 февраля 2010

Я делаю поиск в базе данных, чтобы найти статьи, написанные в течение определенного месяца:

between '1 '.$month.' '.$year and '31 '.$month.' '.$year

Этот метод в порядке, даже если в некоторых месяцах (например, в феврале) всего 28 дней? Другими словами, нужно ли мне динамически находить количество дней в месяце или нет?

Ответы [ 4 ]

7 голосов
/ 16 февраля 2010

Нет, вам не нужно знать продолжительность месяцев. Просто сделай это:

WHERE MONTH(yourcolumnname) = $month AND YEAR(yourcolumnname) = $year
1 голос
/ 16 февраля 2010

Если это поле DATETIME или DATE, вы также можете сделать SELECT * FROM table WHERE date_column LIKE '2010-02-%'; С индексированием, это может быть быстрее, чем метод MONTH() и YEAR(), который должен выполнять вычисления для каждого строки.

1 голос
/ 16 февраля 2010

Ваш код выглядит ок. в том смысле, что это будет работать, но более элегантный подход будет

SELECT * FROM tablename WHERE MONTH(columname) = '1'
                              AND YEAR(columnname) = '2009'
0 голосов
/ 16 февраля 2010

Можете ли вы искать между

between '1 '.$month.' '.$year and '1 '.$month_plus1.' '.$year

?

Пытались ли вы выполнить свой оператор sql для данных, которые вы пытаетесь сопоставить, для начала это может быть хорошим подходом.

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