Ответ 1
В MySQL нет функции DATEPART
. Вместо этого используйте MONTH(date_column)
или EXTRACT(MONTH FROM date_column)
.
Мне нужно получить строки из базы данных, где записи составляют один месяц. Я пробовал этот SELECT:
$result = mysql_query("SELECT * FROM my_table WHERE DATEPART('month', date_column)=11");
В базе данных много строк, у которых есть дата в 11. месяц, но я не получаю никаких результатов. Может кто-нибудь мне помочь? Спасибо!
В MySQL нет функции DATEPART
. Вместо этого используйте MONTH(date_column)
или EXTRACT(MONTH FROM date_column)
.
SELECT * FROM my_table WHERE MONTH(date_column)=11
Если у вас есть указатель на date_column, и вы относитесь к его производительности, лучше НЕ применять функции над столбцом. (Имейте в виду, что это решение не отвечает именно тому, что вы просили, потому что он также включает в себя год)
-- For mysql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
and date_column < '2012-11-01' + INTERVAL 1 MONTH
-- For tsql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
and date_column < DATEADD(month,1,'2012-11-01')
Если ваш DATEPART не работает в MYSQL, вы можете использовать:
SELECT * FROM MyTable WHERE MONTH(joinningDate)=MONTH(NOW())-1 and YEAR(joinningDate)=YEAR(NOW());
Он вернет все записи, которые вставили MyTable в прошлом месяце.