程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL的date_format以及STR_TO_DATE

MYSQL的date_format以及STR_TO_DATE

編輯:MySQL綜合教程

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");      輸出: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)) ;     輸出: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

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved