MYSQL的date_format以及STR_TO_DATE_MySQL

php中文网
发布: 2016-06-01 13:32:04
原创
1502人浏览过

bitsCN.com

mysql的date_format以及str_to_date

 

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

佳弗O2O系统
佳弗O2O系统

佳弗O2O网站系统——乐活版 环境需求 1. 可用的 www 服务器,如 Apache、Zeus、IIS 等 2. php 4.3.0 及以上 3. Zend Optimizer 2.5.7 及以上 4. MySQL 3.23 及以上,仅针对 MySQL 版 安装 1.安装按照提示流程一步一步安装 2.安装过后如果出现错误,请删除 ./Runtime文件夹 3.如果打开首页 点击导航 出现4

佳弗O2O系统 0
查看详情 佳弗O2O系统

 

拿当前年份: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
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号