mysql数据库的日期数据处理 date_format与str_to_date的使用细节

首先建立一个简单的数据表,表名testDateFunction,表结构如下所示

+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment |
| time  | date    | YES  |     | NULL    |                |
+-------+---------+------+-----+---------+----------------+
再向数据表中插入几条测试数据,由于本文重点是记录关于日期函数的用法,数据插入过程就不在赘述,表数据如下所示:

+----+------------+
| id | time       |
+----+------------+
|  1 | 2009-09-26 |
|  2 | 2017-01-03 |
|  3 | 2017-08-07 |
+----+------------+


一·将数据库中的date数据转换为我们想要的String类型

需要使用的函数是:date_format(date,format),其中,date是需要转化的日期数据,format定义的是转换格式。

例:

1.将日期数据按照 年-月-日 时:分:秒 的格式输出

format格式:

年份

%Y   ----->年份,显示4位,如2017;

%y   ----->年份,显示2位,如2017;


select date_format(now(),'%Y');    --->  2017
select date_format(now(),'%y');    --->  17

 
 
 

月份

%m  ----->月份 阿拉伯数字显示,占两位字符,01-12;

%M  ----->月份 英文全文显示,January-December;

%b  ----->月份 英文缩略显示,Jan-Dec;

%c  ----->月份 阿拉伯数字显示,1-12;

select date_format(now(),'%Y-%m');    --->  2017-08select date_format(now(),'%Y-%M');    --->  2017-Augustselect date_format(now(),'%Y-%b');    --->  2017-Augselect date_format(now(),'%Y-%c');    --->  2017-8

 
 

%d ----->日   阿拉伯显示:00-31        

%D----->日  带有英文后缀:1st-31th     

%e----->日  阿拉伯显示:1-31          

%j  ----->日  这一天在这个年份的序号:001-366   

select date_format(now(),'%Y-%m-%d');    --->  2017-08-07select date_format(now(),'%Y-%m-%D');    --->  2017-08-7thselect date_format(now(),'%Y-%m-%e');    --->  2017-08-7select date_format(now(),'%Y-%m-%d   %j');    --->  2017-08-07  219  ps:表示2017年8月7日是2017年的第219天

 
 
 

时、分、秒

%H ----> 时 显示格式 :00-23           

%h----> 时 显示格式 : 01-12        

%I  ----> 时 显示格式 :01-12      

%k----> 时 显示格式 :0-23      

%l  ----> 时 显示格式 :1-12

select date_format(now(),'%Y-%m-%d  %H');    --->  2017-08-07  16  ps:下午4点
select date_format(now(),'%Y-%m-%d  %h');    --->  2017-08-07  04
select date_format(now(),'%Y-%m-%d  %I');    --->  2017-08-07  04
select date_format(now(),'%Y-%m-%d  %k');    --->  2017-08-07  16  ps:当小于10时,显示为1-9,而不是01-09
select date_format(now(),'%Y-%m-%d  %l');    --->  2017-08-07  4  

 
 

分:   %i:00-59

select date_format(now(),'%Y-%m-%d  %H:%i');    --->  2017-08-07  16:47  ps:下午4点47分


 秒:   %S:00-59        %s:00-59

select date_format(now(),'%Y-%m-%d  %H:%i:%S');    --->  2017-08-07  16:47:53  ps:下午4点47分53秒
select date_format(now(),'%Y-%m-%d  %H:%i:%s');    --->  2017-08-07  16:47:53  ps:下午4点47分53秒

 

微秒 %f 

select date_format(now(),'%Y-%m-%d  %H:%i:%S %f');    --->   2017-08-07  16:54:22 000000 

12/24小时制 

AM/PM  ------->%pselect date_format(now(),'%Y-%m-%d  %H:%i:%S %p');    --->    2017-08-07  16:57:21 PM12小时制时间:%r:  select date_format(now(),'%Y-%m-%d  %r');    --->    2017-08-07 04:57:59 PM 24小时制时间: %T:  14:02:44select date_format(now(),'%Y-%m-%d  %T');    --->     2017-08-07  17:15:16

%W ---->  周的英文显示      monday-sunday

%w  ---->  周的阿拉伯显示 :0(星期日)-6(星期六)  

%a  ---->   周的英文缩略显示:Mon-sun

select date_format(now(),'%Y-%m-%d  %H:%i:%s %W');    --->   2017-08-07  17:19:15 Mondayselect date_format(now(),'%Y-%m-%d  %H:%i:%s %w');    --->  2017-08-07  17:20:13 1  ps:1表示周一select date_format(now(),'%Y-%m-%d  %H:%i:%s %a');    --->   2017-08-07  17:19:15 Mon

 
 
 


二·将字符串类型转换为date类型

使用函数str_to_date (str,format),其中,format格式依然如同上述所示。

值得注意的是,str的格式需要和format的格式保持一致,例如 str_to_date('2017-08-07 16:56:12',‘%Y-%m-%d %H:%i:%s’),若是前后不一致则会报错。不再赘述。



  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值