MYSQL的date_format以及STR_TO_DATE_MySQL

WBOY
Lepaskan: 2016-06-01 13:32:04
asal
1314 orang telah melayarinya

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周
Salin selepas log masuk
Salin selepas log masuk

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

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

将2013年转成时间对象:

SELECT STR_TO_DATE(year(CURDATE()),"%Y")=STR_TO_DATE('2013年',"%Y年");   输出: 1  
Salin selepas log masuk
Salin selepas log masuk

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

SELECT date_format(CURDATE(),"%Y-%m")=date_format(STR_TO_DATE('2013年第07月',"%Y年第%m月"),"%Y-%m");    输出: 1
Salin selepas log masuk
Salin selepas log masuk

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

SELECT date_format(CURDATE(),"%Y-%u")=date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u");      输出:0   
Salin selepas log masuk

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

SELECT date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u"); 
Salin selepas log masuk
Salin selepas log masuk

输出的结果居然是: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
Salin selepas log masuk

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

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

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

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

将2013年转成时间对象:

SELECT STR_TO_DATE(year(CURDATE()),"%Y")=STR_TO_DATE('2013年',"%Y年");   输出: 1  
Salin selepas log masuk
Salin selepas log masuk

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

SELECT date_format(CURDATE(),"%Y-%m")=date_format(STR_TO_DATE('2013年第07月',"%Y年第%m月"),"%Y-%m");    输出: 1
Salin selepas log masuk
Salin selepas log masuk

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

SELECT date_format(CURDATE(),"%Y-%u")=date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u");      输出:0    
Salin selepas log masuk

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

SELECT date_format(STR_TO_DATE('2013年第28周',"%Y年第%u周"),"%Y-%u"); 
Salin selepas log masuk
Salin selepas log masuk

输出的结果居然是: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
Salin selepas log masuk

 

 

bitsCN.com
Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan