MYSQL的date_format以及STR_TO_DATE 最近做項目,好好玩了下MYSQL的日期轉換函數,過程如下:
拿當前年份:SELECT DATE_FORMAT(CURDATE(),'%Y年'); 輸出:2013年 拿當前年份中第幾月:SELECT DATE_FORMAT(CURDATE(),'%Y年第%m月'); 輸出:2013年第07月 拿當前年份中第幾周:SELECT DATE_FORMAT(CURDATE(),'%Y年第%u周'); 輸出:2013年第28周
OK,全部拿到,是不是很爽,更爽的在下面: 拿到了後,想了一下是否可以轉回來呢? 立馬動手! 將2013年轉成時間對象:
SELECT STR_TO_DATE(year(CURDATE()),"%Y")=STR_TO_DATE('2013年',"%Y年"); 輸出: 1
看來有戲!繼續將2013年第07月轉時間對象:
SELECT date_format(CURDATE(),"%Y-%m")=date_format(STR_TO_DATE('2013年第07月',"%Y年第%m月"),"%Y-%m"); 輸出: 1
完全沒問題! 再繼續將2013年第28周轉時間對象:
SELECT date_format(CURDATE(),"%Y-%u")=date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u"); 輸出:0WHY???? 繼續找原因,發現個神奇的現象:
SELECT date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u");
輸出的結果居然是:2013-613566753 問度娘完全沒有參考的東西可看。頭痛了半天,最後想到如下解決辦法: 仍舊是以2013年第28周來比較:
SELECT date_format(CURDATE(),'%Y') = date_format(STR_TO_DATE('2013年第28周',"%Y年"),'%Y') and date_format(CURDATE(),'%u') = (select SUBSTR('2013年第28周' FROM 7 FOR 2)) ; 輸出:1MYSQL的date_format以及STR_TO_DATE
最近做項目,好好玩了下MYSQL的日期轉換函數,過程如下:
拿當前年份:SELECT DATE_FORMAT(CURDATE(),'%Y年'); 輸出:2013年 拿當前年份中第幾月:SELECT DATE_FORMAT(CURDATE(),'%Y年第%m月'); 輸出:2013年第07月 拿當前年份中第幾周:SELECT DATE_FORMAT(CURDATE(),'%Y年第%u周'); 輸出:2013年第28周
OK,全部拿到,是不是很爽,更爽的在下面:(呃,大家可以邪惡一下!) 拿到了後,想了一下是否可以轉回來呢? 立馬動手! 將2013年轉成時間對象:
SELECT STR_TO_DATE(year(CURDATE()),"%Y")=STR_TO_DATE('2013年',"%Y年"); 輸出: 1
看來有戲!繼續將2013年第07月轉時間對象:
SELECT date_format(CURDATE(),"%Y-%m")=date_format(STR_TO_DATE('2013年第07月',"%Y年第%m月"),"%Y-%m"); 輸出: 1
完全沒問題! 再繼續將2013年第28周轉時間對象:
SELECT date_format(CURDATE(),"%Y-%u")=date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u"); 輸出:0
WHY???? 繼續找原因,發現個神奇的現象:
SELECT date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u");
輸出的結果居然是:2013-613566753 問度娘完全沒有參考的東西可看。頭痛了半天,最後想到如下解決辦法: 仍舊是以2013年第28周來比較:
SELECT date_format(CURDATE(),'%Y') = date_format(STR_TO_DATE('2013年第28周',"%Y年"),'%Y') and date_format(CURDATE(),'%u') = (select SUBSTR('2013年第28周' FROM 7 FOR 2)) ; 輸出:1