Home  >  Article  >  Database  >  MYSQL的date_format以及STR_TO_DATE_MySQL

MYSQL的date_format以及STR_TO_DATE_MySQL

WBOY
WBOYOriginal
2016-06-01 13:32:041311browse

bitsCN.com

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

 

 

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn