您好,欢迎访问一九零五行业门户网

MYSQL的date_format以及STR_TO_DATE_MySQL

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
其它类似信息

推荐信息