2016-10-22 6 views
1
значение

Мои данные, как показано нижеMySQL экстракт месяц от формата даты

  date_time 
     ----------------   
     24:Sep:2016 22:19:35 
     22:Oct:2016 22:19:35 
     26:Sep:2016 22:19:35 
     28:Sep:2016 22:19:35 

Здесь я использую запрос для проверки данных, где подобраны по месяцам, как показано ниже.

SELECT * FROM `audit_log` WHERE MONTH(STR_TO_DATE(date_time, '%d:%M:%Y %H:%i:%s')) ='Oct' 

Но это не работает для меня. Но за год, если я буду использовать эту работу

SELECT * FROM `audit_log` WHERE YEAR(STR_TO_DATE(date_time, '%d:%M:%Y %H:%i:%s')) ='2016' 
+0

Является ли столбец 'date_time' типом данных DATETIME? – RiggsFolly

+0

@RiggsFolly нет, это просто тип varchar. –

+1

Вы всегда должны хранить даты и время в типах данных DATE/TIME/DATATIME или TIMESTAMP, тогда этот процесс прост. Если этот столбец является своего рода текстовым типом данных, его сложнее. Презентация всегда должна выполняться на уровне презентации, а не в базе данных. – RiggsFolly

ответ

3

Я получил свой ответ. Я использовал длинные формы месяц для поиска и в запросе используется MONTHNAME

SELECT * FROM `audit_log` WHERE MONTHNAME(STR_TO_DATE(date_time, '%d:%M:%Y %H:%i:%s')) ='October' 

в другом процессе, я могу использовать MONTH хотя это возвращение номер. Я должен использовать номер месяца для поиска в запросе. как bwlow

SELECT * FROM `audit_log` WHERE MONTH(STR_TO_DATE(date_time, '%d:%M:%Y %H:%i:%s')) ='10'