2016-10-22 63 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雖然它的收益數字。我必須使用月份號碼在查詢中進行搜索。 like bwlow

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