SELECT строка по DATEPART()

Мне нужно получить строки из базы данных, где записи составляют один месяц. Я пробовал этот SELECT:

$result = mysql_query("SELECT * FROM my_table WHERE DATEPART('month', date_column)=11");

В базе данных много строк, у которых есть дата в 11. месяц, но я не получаю никаких результатов. Может кто-нибудь мне помочь? Спасибо!

Ответ 2

    SELECT * FROM my_table WHERE MONTH(date_column)=11

Ответ 3

Если у вас есть указатель на date_column, и вы относитесь к его производительности, лучше НЕ применять функции над столбцом. (Имейте в виду, что это решение не отвечает именно тому, что вы просили, потому что он также включает в себя год)

-- For mysql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01' 
  and date_column < '2012-11-01' + INTERVAL 1 MONTH

(скрипт mysql)

-- For tsql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
  and date_column < DATEADD(month,1,'2012-11-01')

(скрипт tsql)

Ответ 4

Если ваш DATEPART не работает в MYSQL, вы можете использовать:

SELECT * FROM MyTable WHERE MONTH(joinningDate)=MONTH(NOW())-1 and YEAR(joinningDate)=YEAR(NOW());

Он вернет все записи, которые вставили MyTable в прошлом месяце.