zoukankan      html  css  js  c++  java
  • 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

     

    SELECT DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s'); -- 获取当天零点
    
    select curdate();                       --获取当前日期
    select last_day(curdate());                    --获取当月最后一天。
    select DATE_ADD(curdate(),interval -day(curdate())+1 day);   --获取本月第一天
    select date_add(curdate()-day(curdate())+1,interval 1 month); -- 获取下个月的第一天
    select DATEDIFF(date_add(curdate()-day(curdate())+1,interval 1 month ),DATE_ADD(curdate(),interval -day(curdate())+1 day)) from dual; --获取当前月的天数
  • 相关阅读:
    ....
    CodeForces 375A(同余)
    POJ 2377 Bad Cowtractors (最小生成树)
    POJ 1258 AgriNet (最小生成树)
    HDU 1016 Prime Ring Problem(全排列)
    HDU 4460 Friend Chains(bfs)
    POJ 2236 Wireless Network(并查集)
    POJ 2100 Graveyard Design(尺取)
    POJ 2110 Mountain Walking(二分/bfs)
    CodeForces 1059B Forgery(模拟)
  • 原文地址:https://www.cnblogs.com/luxd/p/9946028.html
Copyright © 2011-2022 走看看