MySQL 日期时间相关函数

Posted 对我有点小自信

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 日期时间相关函数相关的知识,希望对你有一定的参考价值。

第一部分:时间差函数  timestampdiff、datediff、timediff

 

一、时间差函数:timestampdiff

  语法:timestampdiff(interval, datetime1,datetime2)

  结果:返回(时间2-时间1)的时间差,结果单位由interval参数给出。

  • frac_second 毫秒(低版本不支持,用second,再除于1000)
  • second 秒
  • minute 分钟
  • hour 小时
  • day 天
  • week 周
  • month 月
  • quarter 季度
  • year 年

  注意:mysql 5.6之后才支持毫秒的记录和计算,如果是之前的版本,最好是在数据库除datetime类型之外的字段,再建立用于存储毫秒的int字段,然后自己进行转换计算。# 所有格式

SELECT TIMESTAMPDIFF(FRAC_SECOND,2012-10-01,2013-01-13); # 暂不支持
SELECT TIMESTAMPDIFF(SECOND,2012-10-01,2013-01-13); # 8985600 SELECT TIMESTAMPDIFF(MINUTE,2012-10-01,2013-01-13); # 149760 SELECT TIMESTAMPDIFF(HOUR,2012-10-01,2013-01-13); # 2496 SELECT TIMESTAMPDIFF(DAY,2012-10-01,2013-01-13); # 104 SELECT TIMESTAMPDIFF(WEEK,2012-10-01,2013-01-13); # 14 SELECT TIMESTAMPDIFF(MONTH,2012-10-01,2013-01-13); # 3 SELECT TIMESTAMPDIFF(QUARTER,2012-10-01,2013-01-13); # 1 SELECT TIMESTAMPDIFF(YEAR,2012-10-01,2013-01-13); # 0

二、时间差函数:datediff

   语法:传入两个日期参数,比较DAY天数,第一个参数减去第二个参数的天数值。

SELECT DATEDIFF(‘2013-01-13‘,‘2012-10-01‘); # 104

 

三、时间差函数:timediff

  语法:timediff(time1,time2)

  结果:返回两个时间相减得到的差值,time1-time2

SELECT TIMEDIFF(‘2018-05-21 14:51:43‘,‘2018-05-19 12:54:43‘);
# 49:57:00
注意:该方法两个参数必须为日期格式

 

四、其他日期函数

  • now()函数返回的是当前时间的年月日时分秒
  • curdate()函数返回的是年月日信息
  • curtime()函数返回的是当前时间的时分秒信息
  • 对一个包含年月日时分秒日期格式化成年月日日期,可以使用DATE(time)函数
技术分享图片
# 其他日期函数
SELECT NOW(); # 2018-05-21 14:41:00
SELECT CURDATE(); # 2018-05-21
SELECT CURTIME(); # 14:41:38
SELECT DATE(NOW()); # 2018-05-21
SELECT SYSDATE(); # 2018-05-21 14:47:11
SELECT CURRENT_TIME(); # 14:51:30
SELECT CURRENT_TIMESTAMP; # 2018-05-21 14:51:37
SELECT CURRENT_TIMESTAMP(); # 2018-05-21 14:51:43
技术分享图片

注意:now()与sysdate()类似,只不过now()在执行开始时就获取,而sysdate()可以在函数执行时动态获取。

 

第二部分 日期、时间戳、字符串互相转换

#时间日期转字符串  相当与Oracle中的to_char函数
select date_format(now(), %Y-%m-%d); 
#结果:2017-02-27

#时间转时间戳
select unix_timestamp(now()); 
#结果:1488160428

#字符串转时间
select str_to_date(2017-02-27, %Y-%m-%d %H); 
#结果:2017-02-27 00:00:00
select str_to_date(2017-10-16 15:30:28,%Y-%m-%d %H:%i:%s); 
#结果 2017-10-16 15:30:28
#注意 年是大写‘Y’,小时也必须是大写‘H’    (如果其他为大写,则得到结果为null)

#字符串转时间戳
select unix_timestamp(2017-02-27); 
#结果:1488124800

#时间戳转时间
select from_unixtime(1488160428); 
#结果:2017-02-27 09:53:48

#时间戳转字符串
select from_unixtime(1488160428,%Y-%m-%d %T); 
#结果:2017-02-27 09:53:48

 

 

 

以上是关于MySQL 日期时间相关函数的主要内容,如果未能解决你的问题,请参考以下文章

MySQL初级篇——字符串日期时间流程控制函数的相关应用

MySQL初级篇——字符串日期时间流程控制函数的相关应用

mysql 日期时间查询

MySQL中日期和时间戳互相转换的函数和方法

常用python日期日志获取内容循环的代码片段

38 时间和日期相关函数