• 技术文章 >数据库 >mysql教程

    MySQL中的日期时间类型与格式化方式总结

    WBOYWBOY2022-08-19 13:41:16转载974
    本篇文章给大家带来了关于mysql的相关知识,主要介绍了MySQL中的日期时间类型与格式化方式,MySQL中常用的几种时间类型有:date、datetime、time、year、timestamp,下面一起来看一下,希望对大家有帮助。

    php入门到就业线上直播课:进入学习

    推荐学习:mysql视频教程

    【1】MySQL中的日期时间类型

    MySQL中常用的几种时间类型有:date、datetime、time、year、timestamp

    数据类型占用字节最小值最大值零值表示
    date41000-01-019999-12-310000-00-00
    datetime81000-01-01 00:00:009999-12-31 23:59:590000-00-00 00:00: 00
    timestamp4197001010800012038年的某个时刻0000000000000000
    time3-838:59:59838:59:5900:00:00
    year1190121550000

    详细解释

    两位year(00-69表示2000-2069,70-99表示1970~1999)。当应用只需要记录年份时,year比date更省空间

    SQL语句实例

    create table my_date(
    	d1 datetime,
    	d2 date,
    	d3 time,
    	d4 timestamp,
    	d5 year
    )charset utf8;
    desc my_date

    如下图所示:year默认为4位,即YYYY; timestamp不能为空,有默认值,在创建新记录和修改现有记录的时候都对这个数据列刷新。

    如下分别插入几条数据并对time做差异分析:

    insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','11:50:54','2015-09-28 11:51:08','2015');
    insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','-11:50:54','2015-09-28 11:51:08','2015');-- -11
    insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','-211:50:54','2015-09-28 11:51:08','2015');-- -2 11
    insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','-2 11:50:54','2015-09-28 11:51:08','2015');-- -2过去两天
    #year用69标识-2069
    insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','11:50:54','2015-09-28 11:51:08','69');-- 69
    #year用70标识-1970
    insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','11:50:54','2015-09-28 11:51:08','70');-- 70

    timestamp字段

    默认情况下只要当前所在的记录被更新,该字段一定会自动更新成当前时间。

    update my_date set d1 = SYSDATE() where d5=69;
    select * from my_date

    那么MySQL可以拿到真正的时间戳吗?当然可以!

    select UNIX_TIMESTAMP();

    测试实例

    4.1 查询当前时间

    SELECT SYSDATE() from dual;

    4.2 将当前时间插入以上几种类型列中

    insert INTO `user` (name,number,date,datetime,timestamp,time,year)
    VALUES (
    'Loum',3,SYSDATE(),SYSDATE(),SYSDATE(),SYSDATE(),2016
    );

    4.3 mysql中datetime类型的长度位数

    如下所示,通常我们MySQL中设计datetime类型长度都默认为0:

    `work_time` datetime(0) DEFAULT NULL COMMENT '清收时间',

    这时插入时间通常会是我们常见到的:2020-08-29 12:52:16格式。但是如果datetime(n)中的n不为0呢?

    `work_time` datetime(2) DEFAULT NULL COMMENT '清收时间',
    # datetime(n)中的n最大值为6
    `work_time` datetime(6) DEFAULT NULL COMMENT '清收时间',

    这时在MySQL中会分别显示如下:

    2020-08-29 12:52:16.01
    2020-08-29 12:52:16.014057

    会发现最后有一个小数点且小数点后面会分别对应相应位数的数字–这称之为纳秒。

    总结如下:

    【2】日期时间类型格式化

    DATE_FORMAT( )函数

    可以使用date_format( )函数进行时间的转换。

    SELECT DATE_FORMAT(SYSDATE(),'%Y-%m-%d %H:%i:%s') from dual;

    date_format( ) 转换格式

    格式描述
    %a缩写星期名
    %b缩写月名
    %c月,数值
    %D带有英文前缀的月中的天
    %d月的天,数值(00-31)
    %e月的天,数值(0-31)
    %f微秒
    %H小时 (00-23)
    %h小时 (01-12)
    %I小时 (01-12)
    %i分钟,数值(00-59)
    %j年的天 (001-366)
    %k小时 (0-23)
    %l小时 (1-12)
    %M月名
    %m月,数值(00-12)
    %pAM 或 PM
    %r时间,12-小时(hh:mm:ss AM 或 PM)
    %S秒(00-59)
    %s秒(00-59)
    %T时间, 24-小时 (hh:mm:ss)
    %U周 (00-53) 星期日是一周的第一天
    %u周 (00-53) 星期一是一周的第一天
    %V周 (01-53) 星期日是一周的第一天,与 %X 使用
    %v周 (01-53) 星期一是一周的第一天,与 %x 使用
    %W星期名
    %w周的天 (0=星期日, 6=星期六)
    %X年,其中的星期日是周的第一天,4 位,与 %V 使用
    %x年,其中的星期一是周的第一天,4 位,与 %v 使用
    %Y年,4 位
    %y年,2 位

    str_to_date()函数

    字符串转换为date:

    str_to_date(
    	'2016-12-15 16:48:40',
    	'%Y-%m-%d %H:%i:%S'
    )

    推荐学习:mysql视频教程

    以上就是MySQL中的日期时间类型与格式化方式总结的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:脚本之家,如有侵犯,请联系admin@php.cn删除

    千万级数据并发解决方案(理论+实战):点击学习

    Mysql单表千万级数据量的查询优化与性能分析

    Mysql主从原理及其在高并发系统中的应用

    专题推荐:mysql
    上一篇:归纳整理MySQL存储过程参数的用法及说明 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• mysql函数的作用是什么• 怎么解决mysql服务无法启动1069• mysql的case when怎么用• 怎么解决1045无法登录mysql服务器• 归纳总结之MySQL数据库子查询语法规则
    1/1

    PHP中文网