Mysql的日期和时间函数

向右看齐 2021-07-25 02:25 657阅读 0赞

一 使用日期函数获取系统当前日期

  1. mysql> SELECT CURDATE(),CURRENT_DATE(), CURDATE() + 0;
  2. +------------+----------------+---------------+
  3. | CURDATE() | CURRENT_DATE() | CURDATE() + 0 |
  4. +------------+----------------+---------------+
  5. | 2020-01-05 | 2020-01-05 | 20200105 |
  6. +------------+----------------+---------------+
  7. 1 row in set (0.01 sec)

二 使用时间函数获取系统当前时间

  1. mysql> SELECT CURTIME(),CURRENT_TIME(),CURTIME() + 0;
  2. +-----------+----------------+---------------+
  3. | CURTIME() | CURRENT_TIME() | CURTIME() + 0 |
  4. +-----------+----------------+---------------+
  5. | 14:52:34 | 14:52:34 | 145234 |
  6. +-----------+----------------+---------------+
  7. 1 row in set (0.00 sec)

三 使用日期时间函数获取当前系统日期和时间

  1. mysql> SELECT CURRENT_TIMESTAMP(),LOCALTIME(),NOW(),SYSDATE();
  2. +---------------------+---------------------+---------------------+---------------------+
  3. | CURRENT_TIMESTAMP() | LOCALTIME() | NOW() | SYSDATE() |
  4. +---------------------+---------------------+---------------------+---------------------+
  5. | 2020-01-05 14:53:14 | 2020-01-05 14:53:14 | 2020-01-05 14:53:14 | 2020-01-05 14:53:14 |
  6. +---------------------+---------------------+---------------------+---------------------+
  7. 1 row in set (0.02 sec)

四 使用UNIX_TIMESTAMP函数返回UNIX格式的时间戳

  1. mysql> SELECT UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW()), NOW();
  2. +------------------+-----------------------+---------------------+
  3. | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | NOW() |
  4. +------------------+-----------------------+---------------------+
  5. | 1578207219 | 1578207219 | 2020-01-05 14:53:39 |
  6. +------------------+-----------------------+---------------------+
  7. 1 row in set (0.00 sec)

五 使用FROM_UNIXTIME函数将UNIX时间戳转换为普通格式时间

  1. mysql> SELECT FROM_UNIXTIME('1364098609');
  2. +-----------------------------+
  3. | FROM_UNIXTIME('1364098609') |
  4. +-----------------------------+
  5. | 2013-03-24 12:16:49.000000 |
  6. +-----------------------------+
  7. 1 row in set (0.02 sec)

六 使用UTC_DATE()函数返回当前UTC日期值

  1. mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
  2. +------------+----------------+
  3. | UTC_DATE() | UTC_DATE() + 0 |
  4. +------------+----------------+
  5. | 2020-01-05 | 20200105 |
  6. +------------+----------------+
  7. 1 row in set (0.00 sec)

七 使用UTC_TIME()函数返回当前UTC时间值

  1. mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
  2. +------------+----------------+
  3. | UTC_TIME() | UTC_TIME() + 0 |
  4. +------------+----------------+
  5. | 06:55:05 | 65505 |
  6. +------------+----------------+
  7. 1 row in set (0.00 sec)

八 使用MONTH()函数返回指定日期中的月份

  1. mysql> SELECT MONTH('2013-02-13');
  2. +---------------------+
  3. | MONTH('2013-02-13') |
  4. +---------------------+
  5. | 2 |
  6. +---------------------+
  7. 1 row in set (0.00 sec)

九 使用MONTHNAME()函数返回指定日期中的月份的名称

  1. mysql> SELECT MONTHNAME('2013-02-13');
  2. +-------------------------+
  3. | MONTHNAME('2013-02-13') |
  4. +-------------------------+
  5. | February |
  6. +-------------------------+
  7. 1 row in set (0.01 sec)

十 使用DAYNAME()函数返回指定日期的工作日名称

  1. mysql> SELECT DAYNAME('2013-02-13');
  2. +-----------------------+
  3. | DAYNAME('2013-02-13') |
  4. +-----------------------+
  5. | Wednesday |
  6. +-----------------------+
  7. 1 row in set (0.00 sec)

十一 使用DAYOFWEEK()函数返回日期对应的周索引

  1. mysql> SELECT DAYOFWEEK('2013-02-13'); // 这里周三的索引是4,周日的索引为1,周六的索引是7
  2. +-------------------------+
  3. | DAYOFWEEK('2013-02-13') |
  4. +-------------------------+
  5. | 4 |
  6. +-------------------------+
  7. 1 row in set (0.00 sec)

十二 使用WEEKDAY()函数返回日期对应的工作日索引

  1. mysql> SELECT WEEKDAY('2011-02-13 22:23:00'), WEEKDAY('2011-07-01'); // 这里周一的索引是0,周日的索引是6
  2. +--------------------------------+-----------------------+
  3. | WEEKDAY('2011-02-13 22:23:00') | WEEKDAY('2011-07-01') |
  4. +--------------------------------+-----------------------+
  5. | 6 | 4 |
  6. +--------------------------------+-----------------------+
  7. 1 row in set (0.00 sec)

十三 使用WEEK()函数查询指定日期是一年中的第几周

  1. mysql> SELECT WEEK('2011-02-20'),WEEK('2011-02-20',0), WEEK('2011-02-20',1);
  2. +--------------------+----------------------+----------------------+
  3. | WEEK('2011-02-20') | WEEK('2011-02-20',0) | WEEK('2011-02-20',1) |
  4. +--------------------+----------------------+----------------------+
  5. | 8 | 8 | 7 |
  6. +--------------------+----------------------+----------------------+
  7. 1 row in set (0.00 sec)

十四 使用WEEKOFYEAR()查询指定日期是一年中的第几周

  1. mysql> SELECT WEEK('2011-02-20',3), WEEKOFYEAR('2011-02-20');
  2. +----------------------+--------------------------+
  3. | WEEK('2011-02-20',3) | WEEKOFYEAR('2011-02-20') |
  4. +----------------------+--------------------------+
  5. | 7 | 7 |
  6. +----------------------+--------------------------+
  7. 1 row in set (0.00 sec)

十五 使用DAYOFYEAR()函数返回指定日期在一年中的位置

  1. mysql> SELECT DAYOFYEAR('2011-02-20');
  2. +-------------------------+
  3. | DAYOFYEAR('2011-02-20') |
  4. +-------------------------+
  5. | 51 |
  6. +-------------------------+
  7. 1 row in set (0.00 sec)

十六 使用DAYOFYEAR()函数返回指定日期在一个月中的位置

  1. mysql> SELECT DAYOFMONTH('2011-02-20');
  2. +--------------------------+
  3. | DAYOFMONTH('2011-02-20') |
  4. +--------------------------+
  5. | 20 |
  6. +--------------------------+
  7. 1 row in set (0.00 sec)

十七 使用YEAR()函数返回指定日期对应的年份

  1. mysql> SELECT YEAR('11-02-03'),YEAR('96-02-03');
  2. +------------------+------------------+
  3. | YEAR('11-02-03') | YEAR('96-02-03') |
  4. +------------------+------------------+
  5. | 2011 | 1996 |
  6. +------------------+------------------+
  7. 1 row in set (0.00 sec)

十八 使用QUARTER()函数返回指定日期对应的季度

  1. mysql> SELECT QUARTER('11-04-01');
  2. +---------------------+
  3. | QUARTER('11-04-01') |
  4. +---------------------+
  5. | 2 |
  6. +---------------------+
  7. 1 row in set (0.00 sec)

十九 使用MINUTE()函数返回指定时间的分钟值

  1. mysql> SELECT MINUTE('11-02-03 10:11:03');
  2. +-----------------------------+
  3. | MINUTE('11-02-03 10:11:03') |
  4. +-----------------------------+
  5. | 11 |
  6. +-----------------------------+
  7. 1 row in set (0.00 sec)

二十 使用SECOND()函数返回指定时间的秒值

  1. mysql> SELECT SECOND('10:05:03');
  2. +--------------------+
  3. | SECOND('10:05:03') |
  4. +--------------------+
  5. | 3 |
  6. +--------------------+
  7. 1 row in set (0.00 sec)

二一 使用EXTRACT函数提取日期或者时间值

  1. SELECT EXTRACT(YEAR FROM '2011-07-02') AS col1,
  2. EXTRACT(YEAR_MONTH FROM '2011-07-12 01:02:03') AS col2,
  3. EXTRACT(DAY_MINUTE FROM '2011-07-12 01:02:03') AS col3;
  4. +------+--------+--------+
  5. | col1 | col2 | col3 |
  6. +------+--------+--------+
  7. | 2011 | 201107 | 120102 |
  8. +------+--------+--------+
  9. 1 row in set (0.00 sec)

二二 使用TIME_TO_SEC函数将时间值转换为秒值

  1. mysql> SELECT TIME_TO_SEC('23:23:00');
  2. +-------------------------+
  3. | TIME_TO_SEC('23:23:00') |
  4. +-------------------------+
  5. | 84180 |
  6. +-------------------------+
  7. 1 row in set (0.00 sec)

二三 使用SEC_TO_TIME()函数将秒值转换为时间格式

  1. SELECT SEC_TO_TIME(2345),SEC_TO_TIME(2345)+0,
  2. TIME_TO_SEC('23:23:00'), SEC_TO_TIME(84180);
  3. +-------------------+---------------------+-------------------------+--------------------+
  4. | SEC_TO_TIME(2345) | SEC_TO_TIME(2345)+0 | TIME_TO_SEC('23:23:00') | SEC_TO_TIME(84180) |
  5. +-------------------+---------------------+-------------------------+--------------------+
  6. | 00:39:05 | 3905 | 84180 | 23:23:00 |
  7. +-------------------+---------------------+-------------------------+--------------------+
  8. 1 row in set (0.00 sec)

二四 使用DATE_ADD()和ADDDATE()函数执行日期加操作

  1. SELECT DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND) AS col1,
  2. ADDDATE('2010-12-31 23:59:59', INTERVAL 1 SECOND) AS col2,
  3. DATE_ADD('2010-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND) AS col3;
  4. +---------------------+---------------------+---------------------+
  5. | col1 | col2 | col3 |
  6. +---------------------+---------------------+---------------------+
  7. | 2011-01-01 00:00:00 | 2011-01-01 00:00:00 | 2011-01-01 00:01:00 |
  8. +---------------------+---------------------+---------------------+

二五 使用DATE_SUB和SUBDATE函数执行日期减操作

  1. SELECT DATE_SUB('2011-01-02', INTERVAL 31 DAY) AS col1,
  2. SUBDATE('2011-01-02', INTERVAL 31 DAY) AS col2,
  3. DATE_SUB('2011-01-01 00:01:00',INTERVAL '0 0:1:1' DAY_SECOND) AS col3;
  4. +------------+------------+---------------------+
  5. | col1 | col2 | col3 |
  6. +------------+------------+---------------------+
  7. | 2010-12-02 | 2010-12-02 | 2010-12-31 23:59:59 |
  8. +------------+------------+---------------------+
  9. 1 row in set (0.00 sec)

二六 使用ADDTIME进行时间加操作

  1. mysql> SELECT ADDTIME('2000-12-31 23:59:59','1:1:1'), ADDTIME('02:02:02', '02:00:00');
  2. +----------------------------------------+---------------------------------+
  3. | ADDTIME('2000-12-31 23:59:59','1:1:1') | ADDTIME('02:02:02', '02:00:00') |
  4. +----------------------------------------+---------------------------------+
  5. | 2001-01-01 01:01:00 | 04:02:02 |
  6. +----------------------------------------+---------------------------------+
  7. 1 row in set (0.00 sec)

二七 使用SUBTIME()函数执行时间减操作

  1. mysql> SELECT SUBTIME('2000-12-31 23:59:59','1:1:1'), SUBTIME('02:02:02','02:00:00');
  2. +----------------------------------------+--------------------------------+
  3. | SUBTIME('2000-12-31 23:59:59','1:1:1') | SUBTIME('02:02:02','02:00:00') |
  4. +----------------------------------------+--------------------------------+
  5. | 2000-12-31 22:58:58 | 00:02:02 |
  6. +----------------------------------------+--------------------------------+
  7. 1 row in set (0.00 sec)

二八 使用DATEDIFF()函数计算两个日期之间的间隔天数

  1. SELECT DATEDIFF('2010-12-31 23:59:59','2010-12-30') AS col1,
  2. DATEDIFF('2010-11-30 23:59:59','2010-12-31') AS col2;
  3. +------+------+
  4. | col1 | col2 |
  5. +------+------+
  6. | 1 | -31 |
  7. +------+------+
  8. 1 row in set (0.01 sec)

二九 使用DATE_FORMAT()函数格式化输出日期和时间值

  1. mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') AS col1,DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j') AS col2;
  2. +-----------------------+--------------------------+
  3. | col1 | col2 |
  4. +-----------------------+--------------------------+
  5. | Saturday October 1997 | 4th 97 Sat 04 10 Oct 277 |
  6. +-----------------------+--------------------------+
  7. 1 row in set (0.01 sec)

三十 使用TIME_FORMAT()函数格式化输入时间值

  1. mysql> SELECT TIME_FORMAT('16:00:00', '%H %k %h %I %l');
  2. +-------------------------------------------+
  3. | TIME_FORMAT('16:00:00', '%H %k %h %I %l') |
  4. +-------------------------------------------+
  5. | 16 16 04 04 4 |
  6. +-------------------------------------------+
  7. 1 row in set (0.00 sec)

三一 使用GET_FORMAT()函数显示不同格式化类型下的格式字符串

  1. mysql> SELECT GET_FORMAT(DATE,'EUR'), GET_FORMAT(DATE,'USA');
  2. +------------------------+------------------------+
  3. | GET_FORMAT(DATE,'EUR') | GET_FORMAT(DATE,'USA') |
  4. +------------------------+------------------------+
  5. | %d.%m.%Y | %m.%d.%Y |
  6. +------------------------+------------------------+
  7. 1 row in set (0.01 sec)

三二 在DATE_FORMAT()函数中,使用GET_FORMAT函数返回的显示格式字符串来显示指定的日期值

  1. mysql> SELECT DATE_FORMAT('2000-10-05 22:23:00', GET_FORMAT(DATE,'USA') );
  2. +-------------------------------------------------------------+
  3. | DATE_FORMAT('2000-10-05 22:23:00', GET_FORMAT(DATE,'USA') ) |
  4. +-------------------------------------------------------------+
  5. | 10.05.2000 |
  6. +-------------------------------------------------------------+
  7. 1 row in set (0.00 sec)

发表评论

表情:
评论列表 (有 0 条评论,657人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MYSQL日期时间函数

    MYSQL日期和时间函数 大汇总这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date\_col的值是在最后30天以内: [mysql][] SELECT some