Mysql日期格式以及内置日期函数用法详解

2023-05-15 0 590

目录一、MySQL中的日期时间类型二、mysql中获取时间戳三、mysql中datetime类型的长度位数四、mysql常用时间函数五、日期时间计算函数总结

一、MySQL中的日期时间类型

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

Mysql日期格式以及内置日期函数用法详解

datetime和timestamp的区别

相同点: 存储格式相同 datetime和timestamp两者的时间格式都是YYYY-MM-DD HH:MM:SS不同点:a. 存储范围不同. datetime的范围是1000-01-01到9999-12-31. 而timestamp是从1970-01-01到2038-01-19, 即后者的时间范围很小.b. 与时区关系. datetime是存储服务器当前的时区. 而timestamp类型,是将服务器当前时间转换为UTC(世界时间)来存储.即datetime与时区无关,存什么,返回什么. 而timestamp存储的时间,返回的时间会随着数据库的时区不同而发生改变.

详细解释

datetime : 时间日期型,格式是YYYY-mm-dd HH:ii:ss,表示的范围是从1000到9999。但是有零值,0000-00-00 00:00:00;date:日期,就是datetime中的date部分;time:时间(段),指定的某个区间之间,从-时间到+时间(有负时间表示);timestamp:时间戳,并不是常规意义时间戳(如:14253685),范围是’1970-01-01 00:00:00’到2037年。格式为YYYY-mm-dd HH:ii:ss,格式与datetime完全一致;year:yy和yyyy,yyyy的范围是1901-2155,yy的范围是1970-2069。

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

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

描述表:

Mysql日期格式以及内置日期函数用法详解

测试表

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\’);– -11insert into my_date VALUES(\’2015-09-28 11:50:36\’,\’2015-09-28\’,\’-211:50:54\’,\’2015-09-28 11:51:08\’,\’2015\’);– -2 11insert 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标识-2069insert 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标识-1970insert into my_date VALUES(\’2015-09-28 11:50:36\’,\’2015-09-28\’,\’11:50:54\’,\’2015-09-28 11:51:08\’,\’70\’);– 70insert into my_date VALUES(now(),now(),now(),now(),now());– 70

Mysql日期格式以及内置日期函数用法详解

二、mysql中获取时间戳select UNIX_TIMESTAMP();

Mysql日期格式以及内置日期函数用法详解

三、mysql中datetime类型的长度位数

通常我们MySQL中设计datetime类型长度都默认为0:这时插入时间通常会是我们常见到的:2020-08-29 12:52:16格式。但是如果datetime(n)中的n不为0呢?

create table my_date(datetime datetime,datetime2 datetime(2),date date,time time,timestamp timestamp,year year)charset utf8;

Mysql日期格式以及内置日期函数用法详解

四、mysql常用时间函数

获取当前时间

now()sysdate()current_timestamp()

Mysql日期格式以及内置日期函数用法详解

sysdate() 日期函数和 now() 类似, 不同之处在于: now() 在执行开始的时候就得到值了, sysdate() 在函数执行时动态得到的值,例子如下:

Mysql日期格式以及内置日期函数用法详解

时间转换函数(字符串转时间,时间转字符串) 日期/时间转字符串函数: date_format(date, format)(可以格式日期和时间), time_format(time, format)(可以格式时间)

Mysql日期格式以及内置日期函数用法详解

Mysql日期格式以及内置日期函数用法详解

字符串转换日期 函数: str_to_date(str, format)

Mysql日期格式以及内置日期函数用法详解

可以看出, str_to_date(str, format) 转换函数, 可以把一些杂乱无章的字符串转换为日期格式.

日期, 天数转换函数: to_days(date), from_days(days),to_days():返回的是一个天数!从年份 0 开始的天数,from_days(days)作用与to_days相反。

Mysql日期格式以及内置日期函数用法详解

时间, 秒 转换函数: time_to_sec(time), sec_to_time(seconds)

Mysql日期格式以及内置日期函数用法详解

两个函数是相互的

设定日期, 时间函数: makedate(year, dayfoyear), maketime(hour, minute, second)

Mysql日期格式以及内置日期函数用法详解

时间戳, 日期转换函数: unix_timestamp(), unix_timestamp(date), from_unixtime(unix_timestamp), from_unixtime(unix_timestamp, format)

# 当前时间戳select unix_timestamp();# 指定时间的时间戳select unix_timestamp(\’2020-09-09 12:00:00\’);# 时间戳转换成日期select from_unixtime(1599624000);# 时间戳转换成指定格式日期select from_unixtime(1599624000, \’%Y-%D-%M %h:%i:%s\’);

Mysql日期格式以及内置日期函数用法详解

五、日期时间计算函数

日期增加一个时间间隔函数: date_add()

set @dt = now();# 增加一天select date_add(@dt, interval 1 day);# 增加一小时select date_add(@dt, interval 1 hour);# 增加一周select date_add(@dt, interval 1 week);# 增加一季度select date_add(@dt, interval 1 quarter);# 增加一天select date_add(@dt, interval -1 day);

为指定日期减去一个时间间隔函数: date_sub(),用法如上。

两个日期, 时间相减函数: datediff(date1, date2), timediff(time1, time2)

Mysql日期格式以及内置日期函数用法详解

时间戳 (timestamp) 转换, 增加, 减少函数: timestamp(date), timestamp(dt, time), timestampadd(unit, interval, datetime_expr), timestampdiff(unit, datetime_expr1, datetime_expr2)

# timestamp(date)mysql> select timestamp(\’2020-09-09\’);+————————-+| timestamp(\’2020-09-09\’) |+————————-+| 2020-09-09 00:00:00 |+————————-+1 row in set (0.00 sec)# timestamp(dt, time)mysql> select timestamp(\’2020-09-09 09:00:00\’, \’01:00:00\’);+———————————————-+| timestamp(\’2020-09-09 09:00:00\’, \’01:00:00\’) |+———————————————-+| 2020-09-09 10:00:00 |+———————————————-+1 row in set (0.00 sec)# timestampadd(unit, interval, datetime_expr)mysql> select timestampadd(day, 1, \’2020-09-09 09:00:00\’);+———————————————+| timestampadd(day, 1, \’2020-09-09 09:00:00\’) |+———————————————+| 2020-09-10 09:00:00 |+———————————————+1 row in set (0.00 sec)# timestampdiff(unit, datetime_expr1, datetime_expr2), 返回结果以天为单位mysql> select timestampdiff(day, \’2020-09-09\’, \’2020-09-01\’);+————————————————+| timestampdiff(day, \’2020-09-09\’, \’2020-09-01\’) |+————————————————+| -8 |+————————————————+1 row in set (0.00 sec)# 返回结果以小时为单位mysql> select timestampdiff(hour, \’2020-09-09 09:00:00\’, \’2020-09-01 08:00:00\’);+——————————————————————-+| timestampdiff(hour, \’2020-09-09 09:00:00\’, \’2020-09-01 08:00:00\’) |+——————————————————————-+| -193 |+——————————————————————-+1 row in set (0.00 sec)mysql> select datediff(\’2020-09-09\’, \’2020-09-01\’);+————————————–+| datediff(\’2020-09-09\’, \’2020-09-01\’) |+————————————–+| 8 |+————————————–+1 row in set (0.00 sec)

timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数

总结

到此这篇关于Mysql日期格式以及内置日期函数用法的文章就介绍到这了,更多相关Mysql日期时间类型内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Mysql数据库 Mysql日期格式以及内置日期函数用法详解 https://www.u-9.cn/sql/mysql/20423.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

  • 0 +

    访问总数

  • 0 +

    会员总数

  • 0 +

    文章总数

  • 0 +

    今日发布

  • 0 +

    本周发布

  • 0 +

    运行天数

注册会员,众多资源免费下载