mysql数据库的日期数据处理date

xiaoxiao2021-02-28  60

首先建立一个简单的数据表,表名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’),若是前后不一致则会报错。不再赘述。

转载请注明原文地址: https://www.6miu.com/read-94728.html

最新回复(0)