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'
  • 相关阅读:
    算法描述》关于LIS的nlogn方法
    简单tarjan》一道裸题(BZOJ1051)(easy)
    值得一做》关于数学与递推 BZOJ1002 (BZOJ第一页计划)(normal+)
    值得一做》关于一道DP+SPFA的题 BZOJ1003 (BZOJ第一页计划) (normal-)
    图论算法》关于最大流转最短路两三事
    刷题向》图论》BZOJ1001 平面图最大流、平面图最小割、单源最短路(easy+)
    c++中结构体的使用
    c++的标准流入流出和使用例子
    小知识 ——引用
    小知识——关于数组指针和指针数组
  • 原文地址:https://www.cnblogs.com/purple5252/p/12844486.html
Copyright © 2011-2022 走看看