MySQL中常用的几种时间类型有:date、datetime、time、year、timestamp
datetime和timestamp的区别
详细解释
两位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格式。但是如果datetime(n)中的n不为0呢?
create table my_date( datetime datetime, datetime2 datetime(2), date date, time time, timestamp timestamp, year year )charset utf8;
获取当前时间
sysdate() 日期函数和 now() 类似, 不同之处在于: now() 在执行开始的时候就得到值了, sysdate() 在函数执行时动态得到的值,例子如下:
时间转换函数(字符串转时间,时间转字符串) 日期/时间转字符串函数: date_format(date, format)(可以格式日期和时间), time_format(time, format)(可以格式时间)
字符串转换日期 函数: str_to_date(str, format)
可以看出, str_to_date(str, format) 转换函数, 可以把一些杂乱无章的字符串转换为日期格式
.
日期, 天数转换函数: to_days(date), from_days(days)
,to_days():返回的是一个天数!从年份 0 开始的天数,from_days(days)作用与to_days相反。
时间, 秒 转换函数: time_to_sec(time), sec_to_time(seconds)
两个函数是相互的
设定日期, 时间函数: makedate(year, dayfoyear), maketime(hour, minute, second)
时间戳, 日期转换函数: 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');
日期增加一个时间间隔函数: 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)
时间戳 (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日期时间类型内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!