美文网首页简友广场程序员
MySQL 时间函数详解

MySQL 时间函数详解

作者: 梦昼初心 | 来源:发表于2020-04-25 12:43 被阅读0次

    MySQL时间函数

    在日常开发中经常会遇到时间格式化,查询某一段时间的数据等,每次需要在去问问度娘,这次自己汇总了,也让度娘休息下;后期遇到时间函数会及时补充

    时间函数汇总

    函数 Value 解释 例子
    NOW() 2020-04-23 17:50:19 获取当前日期和时间 SELECT now();
    SYSDATE(fsp) 2020-04-24 10:45:36.142 获取当前日期和时间,与NOW()函数格式一样,但是SYSDATE()函数接受一个可选参数fsp,它确定结果是否应该包含从0到6的小数秒精度。 SELECT SYSDATE(3);
    current_timestamp() 2020-04-24 10:45:36 获取当前日期和时间,与NOW()函数格式一样 SELECT current_timestamp();
    CURDATE() 2020-04-23 获取当前日期 SELECT CURDATE();
    DATE(NOW()) 2020-04-23 获取当前日期 SELECT DATE(NOW());
    CURTIME() 17:50:19 获取当前时间 SELECT CURTIME();
    DATE_SUB(NOW(),INTERVAL 1 DAY) 2020-04-22 17:50:19 将日期减去指定的时间间隔 SELECT DATE_SUB(NOW(),INTERVAL 1 DAY);
    DATE_ADD(NOW(),INTERVAL 1 DAY) 2020-04-24 17:50:19 将日期添加指定的时间间隔 SELECT DATE_ADD(NOW(),INTERVAL 1 DAY);
    DATEDIFF('2020-04-06','2020-04-01') 5 获取两个日期之间的天数,当前时间在前 SELECT DATEDIFF('2020-04-06','2020-04-01');
    DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s') 2020-04-23 17:50:19 格式化日期时间 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s');
    EXTRACT( YEAR FROM NOW()) 2020 获取返回日期/时间的单独部分,比如年、月、日、小时、分钟等等 SELECT EXTRACT( YEAR FROM NOW());
    TO_DAYS( NOW()) 737904 给定一个日期date, 返回一个天数 (从年份0开始的天数 ) SELECT TO_DAYS(NOW());
    YEAR( NOW()) 2020 给定一个日期date, 返回当前时间的年份 SELECT YEAR(NOW());
    MONTH( NOW()) 4 给定一个日期date, 返回当前时间的月份 SELECT MONTH(NOW());
    DAY( NOW()) 24 给定一个日期date, 返回当前时间的日 SELECT DAY(NOW());
    WEEK( NOW(),1) 17 计算日期 date 是一年中的第几周。WEEK(date,mode) 函数允许指定星期是否起始于周日或周一,以及返回值的范围是否为 0~52 或 1~53,WEEK函数接受两个参数:date是要获取周数的日期。mode是一个可选参数,用于确定周数计算的逻辑。 SELECT WEEK(NOW(),1);

    EXTRACT 解读

    EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

    语法:

    EXTRACT(unit FROM date)
    

    date 参数是合法的日期表达式。unit 参数可以是下列的值:

    项目 解释 Value Value
    MICROSECOND 返回时间或日期时间表达式expr的微秒,这个数字范围为 0 到 999999 0 SELECT EXTRACT(MICROSECOND FROM NOW()) AS MICROSECOND;
    SECOND 返回时间秒数,范围为0到59 38 SELECT EXTRACT(SECOND FROM NOW()) AS SECOND;
    MINUTE 返回时间分钟,范围为0到59 42 SELECT EXTRACT(MINUTE FROM NOW()) AS MINUTE;
    HOUR 返回时间的小时。 对于一天时间值,返回值的范围是0到23。 但是,TIME值的范围实际上要大得多,所以HOUR可以返回大于23的值 18 SELECT EXTRACT(HOUR FROM NOW()) AS HOUR;
    DAY 23 SELECT EXTRACT(DAY FROM NOW()) AS OrderDay;
    WEEK 16 SELECT EXTRACT(WEEK FROM NOW()) AS WEEK;
    MONTH 4 SELECT EXTRACT(MONTH FROM NOW()) AS OrderMonth;
    QUARTER 2 SELECT EXTRACT(QUARTER FROM NOW()) AS QUARTER;
    YEAR 2020 SELECT EXTRACT(YEAR FROM NOW()) AS OrderYear;
    SECOND_MICROSECOND 42000000 SELECT EXTRACT(SECOND_MICROSECOND FROM NOW()) AS '1';
    MINUTE_MICROSECOND 4842000000 SELECT EXTRACT(MINUTE_MICROSECOND FROM NOW()) AS '2';
    MINUTE_SECOND 4842 SELECT EXTRACT(MINUTE_SECOND FROM NOW()) AS '3';
    HOUR_MICROSECOND 184843000000 SELECT EXTRACT(HOUR_MICROSECOND FROM NOW()) AS '4';
    HOUR_SECOND 184843 SELECT EXTRACT(HOUR_SECOND FROM NOW()) AS '5';
    HOUR_MINUTE 1848 SELECT EXTRACT(HOUR_MINUTE FROM NOW()) AS '6';
    DAY_MICROSECOND 184843000000 SELECT EXTRACT(DAY_MICROSECOND FROM NOW()) AS '7';
    DAY_SECOND 184843 SELECT EXTRACT(DAY_SECOND FROM NOW()) AS '8';
    DAY_MINUTE 1848 SELECT EXTRACT(DAY_MINUTE FROM NOW()) AS '9';
    DAY_HOUR 18 SELECT EXTRACT(DAY_HOUR FROM NOW()) AS '10';
    YEAR_MONTH 202004 SELECT EXTRACT(YEAR_MONTH FROM NOW()) AS '11';

    时间问题==EXTRACT== 函数中的 ==Unit==值解释后期增加

    NOW()与SYSDATE(fsp)的区别

    NOW([fsp])

    返回当前日期和时间作为值的形式 或 格式,具体取决于该函数是在字符串环境中还是在数字环境中使用。该值以会话时区表示。 'YYYY-MM-DD hh:mm:ss'YYYYMMDDhhmmss
    如果fsp给定参数指定从0到6的小数秒精度,则返回值包括该位数的小数秒部分。

    mysql> SELECT NOW();
            -> '2020-04-24 23:50:26'
    mysql> SELECT NOW() + 0;
            -> 20071215235026.000000
    

    NOW()返回一个恒定时间,该时间指示该语句开始执行的时间。(在存储的函数或触发器内, NOW()返回函数或触发语句开始执行的时间。)这与的行为不同SYSDATE(),后者的行为 返回执行的确切时间。

    mysql> SELECT NOW(), SLEEP(2), NOW();
    +---------------------+----------+---------------------+
    | NOW()               | SLEEP(2) | NOW()               |
    +---------------------+----------+---------------------+
    | 2020-04-24 13:47:36 |        0 | 2020-04-24 13:47:36 |
    +---------------------+----------+---------------------+
    
    mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();
    +---------------------+----------+---------------------+
    | SYSDATE()           | SLEEP(2) | SYSDATE()           |
    +---------------------+----------+---------------------+
    | 2020-04-24 13:47:44 |        0 | 2020-04-24 13:47:46 |
    +---------------------+----------+---------------------+
    

    另外,该SET TIMESTAMP语句会影响NOW()而不是所 返回的值 SYSDATE()。这意味着二进制日志中的时间戳设置对的调用没有影响SYSDATE()。将时间戳记设置为非零值会导致每次随后的调用NOW() 返回该值。将时间戳设置为零会取消此效果,以便NOW()再次返回当前日期和时间。

    相关文章

      网友评论

        本文标题:MySQL 时间函数详解

        本文链接:https://www.haomeiwen.com/subject/ldohwhtx.html