zoukankan      html  css  js  c++  java
  • Mysql——日期函数,时间操作(汇总)

    英文文档连接:https://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html

    mysql 获取当天0点 和 当天23点59分59秒

    SELECT DATE_FORMAT('2019-08-08','%Y-%m-%d %H:%i:%s');

    SELECT DATE_SUB( DATE_ADD('2019-08-08', INTERVAL 1 DAY),INTERVAL 1 SECOND)

      以下翻译至官方文档:

    • ADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days) 将指定的时间间隔值加到时间上
    mysql> SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY);
            -> '2008-02-02'
    mysql> SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY);
            -> '2008-02-02'

            如果不指定时间间隔单位时,默认为单位为天

    mysql> SELECT ADDDATE('2008-01-02', 31);
            -> '2008-02-02'
    •  ADDTIME(expr1,expr2) 将时间表达式expr2加到expr1上
    mysql> SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');
            -> '2008-01-02 01:01:01.000001'
    mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');
            -> '03:00:01.999997'
    • CURDATE() 以‘YYYY-MM-DD’形式或值的形式返回当前时间
    mysql> SELECT CURDATE();   -- 默认返回的形式是'YYYY-MM-DD'
            -> '2008-06-13'
    mysql> SELECT CURDATE() + 0; -- +0返回的数值
            -> 20080613
    • DATE(expr)  获取指定时间的年月日部分
    mysql> SELECT DATE('2003-12-31 01:02:03');
            -> '2003-12-31'
    • DATEDIFF(expr1,expr2) 返回时间值expr1 - 时间值expr2之间相差的天数。
    mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
            -> 1
    mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31');
            -> -31
    • DATE_ADD(date,INTERVAL expr unit)  时间添加,将指定的时间间隔expr添加至date上,返回值取决于date的格式
    • DATE_SUB(date,INTERVAL expr unit)  时间相减,将指定的时间间隔expr添加至date上,返回值取决于date的格式 
    复制代码
    mysql> SELECT DATE_ADD('2018-05-01',INTERVAL 1 DAY);
            -> '2018-05-02'
    mysql> SELECT DATE_SUB('2018-05-01',INTERVAL 1 YEAR);
            -> '2017-05-01'
    mysql> SELECT DATE_ADD('2020-12-31 23:59:59',INTERVAL 1 SECOND);
            -> '2021-01-01 00:00:00'
    mysql> SELECT DATE_ADD('2018-12-31 23:59:59', INTERVAL 1 DAY);
            -> '2019-01-01 23:59:59'
    mysql> SELECT DATE_ADD('2100-12-31 23:59:59',INTERVAL '1:1' MINUTE_SECOND);
            -> '2101-01-01 00:01:00'
    mysql> SELECT DATE_SUB('2025-01-01 00:00:00', INTERVAL '1 1:1:1' DAY_SECOND);
            -> '2024-12-30 22:58:59'
    mysql> SELECT DATE_ADD('1900-01-01 00:00:00', INTERVAL '-1 10' DAY_HOUR);
            -> '1899-12-30 14:00:00'
    mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
            -> '1997-12-02'
    mysql> SELECT DATE_ADD('1992-12-31 23:59:59.000002',INTERVAL '1.999999' SECOND_MICROSECOND);
            -> '1993-01-01 00:00:01.000001'
    复制代码
    • DATE_FORMAT(date,format) date根据format的格式转换成字符串
    复制代码
    mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
            -> 'Sunday October 2009'
    mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
            -> '22:23:00'
    mysql> SELECT DATE_FORMAT('1900-10-04 22:23:00',
        ->                 '%D %y %a %d %m %b %j');
            -> '4th 00 Thu 04 10 Oct 277'
    mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
        ->                 '%H %k %I %r %T %S %w');
            -> '22 22 10 10:23:00 PM 22:23:00 00 6'
    mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
            -> '1998 52'
    mysql> SELECT DATE_FORMAT('2006-06-00', '%d');
            -> '00'
    mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%Y%m%d%H%i%s');
            -> '19971004222300'
    复制代码
    • DAYNAME(date) 返回指定日期是周几
    mysql> SELECT DAYNAME('2007-02-03');
            -> 'Saturday'
    • DAYOFMONTH(date) 返回指定日期是这个月的第几天,返回数值
    mysql> SELECT DAYOFMONTH('2007-02-03');
            -> 3
    • DAYOFWEEK(date) 返回指定日期的周几(1=周日,2=星期一,…,7=周六)
    mysql> SELECT DAYOFWEEK('2007-02-03');
            -> 7
    • DAYOFYEAR(date) 返回一年中的第几天(1-366)
    mysql> SELECT DAYOFYEAR('2007-02-03');
            -> 34
    • FROM_DAYS(N) 给定天数N,返回DATE
    mysql> SELECT FROM_DAYS(730669);
            -> '2000-07-03'
    • FROM_UNIXTIME(unix_timestamp[,format]) 将时间戳转换成‘YYYY-MM-DD hh:mm:ss’格式或者指定格式
    mysql> SELECT FROM_UNIXTIME(1447430881);
            -> '2015-11-13 10:08:01'
    mysql> SELECT FROM_UNIXTIME(1447430881) + 0;
            -> 20151113100801
    mysql> SELECT FROM_UNIXTIME(1447430881,'%Y %D %M %h:%i:%s %x');
            -> '2015 13th November 10:08:01 2015'
    • LAST_DAY(date) 返回当月最后一天的相应值
    复制代码
    mysql> SELECT LAST_DAY('2003-02-05');
            -> '2003-02-28'
    mysql> SELECT LAST_DAY('2004-02-05');
            -> '2004-02-29'
    mysql> SELECT LAST_DAY('2004-01-01 01:01:01');
            -> '2004-01-31'
    mysql> SELECT LAST_DAY('2003-03-32');
            -> NULL
    复制代码
    • NOW([fsp]) 返回当前日期'YYYY-MM-DD hh:mm:ss'或作为值的YYYYMMDDhhmmss 
    mysql> SELECT NOW();
            -> '2007-12-15 23:50:26'
    mysql> SELECT NOW() + 0;
            -> 20071215235026.000000
    • PERIOD_ADD(P,N) 将N个月添加到时间P中(其中P只能是‘YYMM’或‘YYYYMM’)格式,返回格式为‘YYYYMM’
    mysql> SELECT PERIOD_ADD(200801,2);
            -> 200803
    • SYSDATE([fsp]) 获取当前执行时间,与now()不一样,now()的时间是恒定的,而sysdate()是执行该函数的时间
    复制代码
    mysql> SELECT NOW(), SLEEP(2), NOW();
    +---------------------+----------+---------------------+
    | NOW()               | SLEEP(2) | NOW()               |
    +---------------------+----------+---------------------+
    | 2006-04-12 13:47:36 |        0 | 2006-04-12 13:47:36 |
    +---------------------+----------+---------------------+
    
    mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();
    +---------------------+----------+---------------------+
    | SYSDATE()           | SLEEP(2) | SYSDATE()           |
    +---------------------+----------+---------------------+
    | 2006-04-12 13:47:44 |        0 | 2006-04-12 13:47:46 |
    +---------------------+----------+---------------------+
    复制代码
    • UNIX_TIMESTAMP([date]) 如果不带参数,则返回一个unix时间戳;如果带date格式,则返回与'1970-01-01 00:00:00'UTC 相差的秒数形式的参数值 
    mysql> SELECT UNIX_TIMESTAMP();
            -> 1447431666
    mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19');
            -> 1447431619
    mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.012');
            -> 1447431619.012
    • CONVERT_TZ(dt,from_tz,to_tz) 将dt的时间值从from_tz的时区转换至to_tz的时区
    mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
            -> '2004-01-01 13:00:00'
    mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
            -> '2004-01-01 22:00:00'
  • 相关阅读:
    ini_set /ini_get函数功能-----PHP
    【转】那个什么都懂的家伙
    word 2007为不同页插入不同页眉页脚
    August 26th 2017 Week 34th Saturday
    【2017-11-08】Linux与openCV:opencv版本查看及库文件位置等
    August 25th 2017 Week 34th Friday
    August 24th 2017 Week 34th Thursday
    August 23rd 2017 Week 34th Wednesday
    August 22nd 2017 Week 34th Tuesday
    August 21st 2017 Week 34th Monday
  • 原文地址:https://www.cnblogs.com/purple5252/p/12844486.html
Copyright © 2011-2022 走看看