Home > Database > Mysql Tutorial > body text

MYSQL的date_format以及STR_TO_DATE_MySQL

WBOY
Release: 2016-06-01 13:32:04
Original
1314 people have browsed it

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周
Copy after login
Copy after login

OK,全部拿到,是不是很爽,更爽的在下面:

拿到了后,想了一下是否可以转回来呢? 立马动手!

将2013年转成时间对象:

SELECT STR_TO_DATE(year(CURDATE()),"%Y")=STR_TO_DATE('2013年',"%Y年");   输出: 1  
Copy after login
Copy after login

看来有戏!继续将2013年第07月转时间对象:

SELECT date_format(CURDATE(),"%Y-%m")=date_format(STR_TO_DATE('2013年第07月',"%Y年第%m月"),"%Y-%m");    输出: 1
Copy after login
Copy after login

完全没问题! 再继续将2013年第28周转时间对象:

SELECT date_format(CURDATE(),"%Y-%u")=date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u");      输出:0   
Copy after login

WHY???? 继续找原因,发现个神奇的现象:

SELECT date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u"); 
Copy after login
Copy after login

输出的结果居然是: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
Copy after login

最近做项目,好好玩了下MYSQL的日期转换函数,过程如下:

拿当前年份:SELECT DATE_FORMAT(CURDATE(),'%Y年');    输出:2013年拿当前年份中第几月:SELECT DATE_FORMAT(CURDATE(),'%Y年第%m月');     输出:2013年第07月拿当前年份中第几周:SELECT DATE_FORMAT(CURDATE(),'%Y年第%u周');         输出:2013年第28周
Copy after login
Copy after login

OK,全部拿到,是不是很爽,更爽的在下面:(呃,大家可以邪恶一下!)

拿到了后,想了一下是否可以转回来呢? 立马动手!

将2013年转成时间对象:

SELECT STR_TO_DATE(year(CURDATE()),"%Y")=STR_TO_DATE('2013年',"%Y年");   输出: 1  
Copy after login
Copy after login

看来有戏!继续将2013年第07月转时间对象:

SELECT date_format(CURDATE(),"%Y-%m")=date_format(STR_TO_DATE('2013年第07月',"%Y年第%m月"),"%Y-%m");    输出: 1
Copy after login
Copy after login

完全没问题! 再继续将2013年第28周转时间对象:

SELECT date_format(CURDATE(),"%Y-%u")=date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u");      输出:0    
Copy after login

WHY???? 继续找原因,发现个神奇的现象:

SELECT date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u"); 
Copy after login
Copy after login

输出的结果居然是: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
Copy after login

 

 

bitsCN.com
Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template