正文

Mysql日期格式以及内置日期函数用法详解(MySQL日期类型查询)快来看

文章摘要

这篇文章介绍了MySQL中常用的日期时间类型及其相关函数,主要包括以下核心内容: 1. **MySQL中的日期时间类型** - 常用类型包括`date`、`datetime`、`time`、`year`和`timestamp`。 - `datetime`和`timestamp`的区别: - 存储范围不同:`datetime`的范围是1000-0999,`timestamp`的范围是1970-01-01到2038-01-19。 - 时区处理不同:`datetime`存储服务器当前的时区,`timestamp`存储服务器时间并转换为UTC。 2. **日期时间转换与获取当前时间** - 获取当前时间:使用`now()`、`sysdate()`等函数。 - 时间戳转换: - `str_to_date`和`from_date`用于字符串到日期的转换。 - `str_to_time`和`from_time`用于字符串到时间的转换。 - 时间戳获取:使用`timestamp()`函数。 3. **日期和时间函数** - 日期转换函数:`from_unixtime`和`str_to_date`。 - 时间转换函数:`str_to_time`和`from_unixtime`。 - 日期计算函数: - `date_add`和`date_sub`用于增加或减少时间间隔。 - 时间戳计算函数:`timestampadd`和`timestampdiff`用于时间戳的增加、减少和计算时间差。 总结:文章详细介绍了MySQL中日期时间类型及其相关函数,帮助读者理解如何在MySQL中处理日期和时间数据。


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

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

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;

描述表:

测试表

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 insert into my_date VALUES(now(),now(),now(),now(),now());– 70

select UNIX_TIMESTAMP();

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

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

获取当前时间

now()sysdate()current_timestamp()

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

时间转换函数(字符串转时间,时间转字符串) 日期/时间转字符串函数:

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

可以看出, .

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

时间, 秒 转换函数:

两个函数是相互的

设定日期, 时间函数:

时间戳, 日期转换函数:

# 当前时间戳 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’);

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

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);

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

两个日期, 时间相减函数:

时间戳 (timestamp) 转换, 增加, 减少函数:

# 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日期时间类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:MySQL日期数据类型、时间类型使用总结mysql 日期和时间格式转换实现语句MySQL中日期和时间戳互相转换的函数和方法mysql如何查询日期与时间MySQL中的日期时间类型与格式化方式MySQL 获得当前日期时间的函数小结mysql常用日期时间/数值函数详解(必看)Mysql根据时间查询日期的优化技巧mysql 日期和时间函数