Mysql的日期和时间函数
一 使用日期函数获取系统当前日期
mysql> SELECT CURDATE(),CURRENT_DATE(), CURDATE() + 0;
+------------+----------------+---------------+
| CURDATE() | CURRENT_DATE() | CURDATE() + 0 |
+------------+----------------+---------------+
| 2020-01-05 | 2020-01-05 | 20200105 |
+------------+----------------+---------------+
1 row in set (0.01 sec)
二 使用时间函数获取系统当前时间
mysql> SELECT CURTIME(),CURRENT_TIME(),CURTIME() + 0;
+-----------+----------------+---------------+
| CURTIME() | CURRENT_TIME() | CURTIME() + 0 |
+-----------+----------------+---------------+
| 14:52:34 | 14:52:34 | 145234 |
+-----------+----------------+---------------+
1 row in set (0.00 sec)
三 使用日期时间函数获取当前系统日期和时间
mysql> SELECT CURRENT_TIMESTAMP(),LOCALTIME(),NOW(),SYSDATE();
+---------------------+---------------------+---------------------+---------------------+
| CURRENT_TIMESTAMP() | LOCALTIME() | NOW() | SYSDATE() |
+---------------------+---------------------+---------------------+---------------------+
| 2020-01-05 14:53:14 | 2020-01-05 14:53:14 | 2020-01-05 14:53:14 | 2020-01-05 14:53:14 |
+---------------------+---------------------+---------------------+---------------------+
1 row in set (0.02 sec)
四 使用UNIX_TIMESTAMP函数返回UNIX格式的时间戳
mysql> SELECT UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW()), NOW();
+------------------+-----------------------+---------------------+
| UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | NOW() |
+------------------+-----------------------+---------------------+
| 1578207219 | 1578207219 | 2020-01-05 14:53:39 |
+------------------+-----------------------+---------------------+
1 row in set (0.00 sec)
五 使用FROM_UNIXTIME函数将UNIX时间戳转换为普通格式时间
mysql> SELECT FROM_UNIXTIME('1364098609');
+-----------------------------+
| FROM_UNIXTIME('1364098609') |
+-----------------------------+
| 2013-03-24 12:16:49.000000 |
+-----------------------------+
1 row in set (0.02 sec)
六 使用UTC_DATE()函数返回当前UTC日期值
mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
+------------+----------------+
| UTC_DATE() | UTC_DATE() + 0 |
+------------+----------------+
| 2020-01-05 | 20200105 |
+------------+----------------+
1 row in set (0.00 sec)
七 使用UTC_TIME()函数返回当前UTC时间值
mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
+------------+----------------+
| UTC_TIME() | UTC_TIME() + 0 |
+------------+----------------+
| 06:55:05 | 65505 |
+------------+----------------+
1 row in set (0.00 sec)
八 使用MONTH()函数返回指定日期中的月份
mysql> SELECT MONTH('2013-02-13');
+---------------------+
| MONTH('2013-02-13') |
+---------------------+
| 2 |
+---------------------+
1 row in set (0.00 sec)
九 使用MONTHNAME()函数返回指定日期中的月份的名称
mysql> SELECT MONTHNAME('2013-02-13');
+-------------------------+
| MONTHNAME('2013-02-13') |
+-------------------------+
| February |
+-------------------------+
1 row in set (0.01 sec)
十 使用DAYNAME()函数返回指定日期的工作日名称
mysql> SELECT DAYNAME('2013-02-13');
+-----------------------+
| DAYNAME('2013-02-13') |
+-----------------------+
| Wednesday |
+-----------------------+
1 row in set (0.00 sec)
十一 使用DAYOFWEEK()函数返回日期对应的周索引
mysql> SELECT DAYOFWEEK('2013-02-13'); // 这里周三的索引是4,周日的索引为1,周六的索引是7
+-------------------------+
| DAYOFWEEK('2013-02-13') |
+-------------------------+
| 4 |
+-------------------------+
1 row in set (0.00 sec)
十二 使用WEEKDAY()函数返回日期对应的工作日索引
mysql> SELECT WEEKDAY('2011-02-13 22:23:00'), WEEKDAY('2011-07-01'); // 这里周一的索引是0,周日的索引是6
+--------------------------------+-----------------------+
| WEEKDAY('2011-02-13 22:23:00') | WEEKDAY('2011-07-01') |
+--------------------------------+-----------------------+
| 6 | 4 |
+--------------------------------+-----------------------+
1 row in set (0.00 sec)
十三 使用WEEK()函数查询指定日期是一年中的第几周
mysql> SELECT WEEK('2011-02-20'),WEEK('2011-02-20',0), WEEK('2011-02-20',1);
+--------------------+----------------------+----------------------+
| WEEK('2011-02-20') | WEEK('2011-02-20',0) | WEEK('2011-02-20',1) |
+--------------------+----------------------+----------------------+
| 8 | 8 | 7 |
+--------------------+----------------------+----------------------+
1 row in set (0.00 sec)
十四 使用WEEKOFYEAR()查询指定日期是一年中的第几周
mysql> SELECT WEEK('2011-02-20',3), WEEKOFYEAR('2011-02-20');
+----------------------+--------------------------+
| WEEK('2011-02-20',3) | WEEKOFYEAR('2011-02-20') |
+----------------------+--------------------------+
| 7 | 7 |
+----------------------+--------------------------+
1 row in set (0.00 sec)
十五 使用DAYOFYEAR()函数返回指定日期在一年中的位置
mysql> SELECT DAYOFYEAR('2011-02-20');
+-------------------------+
| DAYOFYEAR('2011-02-20') |
+-------------------------+
| 51 |
+-------------------------+
1 row in set (0.00 sec)
十六 使用DAYOFYEAR()函数返回指定日期在一个月中的位置
mysql> SELECT DAYOFMONTH('2011-02-20');
+--------------------------+
| DAYOFMONTH('2011-02-20') |
+--------------------------+
| 20 |
+--------------------------+
1 row in set (0.00 sec)
十七 使用YEAR()函数返回指定日期对应的年份
mysql> SELECT YEAR('11-02-03'),YEAR('96-02-03');
+------------------+------------------+
| YEAR('11-02-03') | YEAR('96-02-03') |
+------------------+------------------+
| 2011 | 1996 |
+------------------+------------------+
1 row in set (0.00 sec)
十八 使用QUARTER()函数返回指定日期对应的季度
mysql> SELECT QUARTER('11-04-01');
+---------------------+
| QUARTER('11-04-01') |
+---------------------+
| 2 |
+---------------------+
1 row in set (0.00 sec)
十九 使用MINUTE()函数返回指定时间的分钟值
mysql> SELECT MINUTE('11-02-03 10:11:03');
+-----------------------------+
| MINUTE('11-02-03 10:11:03') |
+-----------------------------+
| 11 |
+-----------------------------+
1 row in set (0.00 sec)
二十 使用SECOND()函数返回指定时间的秒值
mysql> SELECT SECOND('10:05:03');
+--------------------+
| SECOND('10:05:03') |
+--------------------+
| 3 |
+--------------------+
1 row in set (0.00 sec)
二一 使用EXTRACT函数提取日期或者时间值
SELECT EXTRACT(YEAR FROM '2011-07-02') AS col1,
EXTRACT(YEAR_MONTH FROM '2011-07-12 01:02:03') AS col2,
EXTRACT(DAY_MINUTE FROM '2011-07-12 01:02:03') AS col3;
+------+--------+--------+
| col1 | col2 | col3 |
+------+--------+--------+
| 2011 | 201107 | 120102 |
+------+--------+--------+
1 row in set (0.00 sec)
二二 使用TIME_TO_SEC函数将时间值转换为秒值
mysql> SELECT TIME_TO_SEC('23:23:00');
+-------------------------+
| TIME_TO_SEC('23:23:00') |
+-------------------------+
| 84180 |
+-------------------------+
1 row in set (0.00 sec)
二三 使用SEC_TO_TIME()函数将秒值转换为时间格式
SELECT SEC_TO_TIME(2345),SEC_TO_TIME(2345)+0,
TIME_TO_SEC('23:23:00'), SEC_TO_TIME(84180);
+-------------------+---------------------+-------------------------+--------------------+
| SEC_TO_TIME(2345) | SEC_TO_TIME(2345)+0 | TIME_TO_SEC('23:23:00') | SEC_TO_TIME(84180) |
+-------------------+---------------------+-------------------------+--------------------+
| 00:39:05 | 3905 | 84180 | 23:23:00 |
+-------------------+---------------------+-------------------------+--------------------+
1 row in set (0.00 sec)
二四 使用DATE_ADD()和ADDDATE()函数执行日期加操作
SELECT DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND) AS col1,
ADDDATE('2010-12-31 23:59:59', INTERVAL 1 SECOND) AS col2,
DATE_ADD('2010-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND) AS col3;
+---------------------+---------------------+---------------------+
| col1 | col2 | col3 |
+---------------------+---------------------+---------------------+
| 2011-01-01 00:00:00 | 2011-01-01 00:00:00 | 2011-01-01 00:01:00 |
+---------------------+---------------------+---------------------+
二五 使用DATE_SUB和SUBDATE函数执行日期减操作
SELECT DATE_SUB('2011-01-02', INTERVAL 31 DAY) AS col1,
SUBDATE('2011-01-02', INTERVAL 31 DAY) AS col2,
DATE_SUB('2011-01-01 00:01:00',INTERVAL '0 0:1:1' DAY_SECOND) AS col3;
+------------+------------+---------------------+
| col1 | col2 | col3 |
+------------+------------+---------------------+
| 2010-12-02 | 2010-12-02 | 2010-12-31 23:59:59 |
+------------+------------+---------------------+
1 row in set (0.00 sec)
二六 使用ADDTIME进行时间加操作
mysql> SELECT ADDTIME('2000-12-31 23:59:59','1:1:1'), ADDTIME('02:02:02', '02:00:00');
+----------------------------------------+---------------------------------+
| ADDTIME('2000-12-31 23:59:59','1:1:1') | ADDTIME('02:02:02', '02:00:00') |
+----------------------------------------+---------------------------------+
| 2001-01-01 01:01:00 | 04:02:02 |
+----------------------------------------+---------------------------------+
1 row in set (0.00 sec)
二七 使用SUBTIME()函数执行时间减操作
mysql> SELECT SUBTIME('2000-12-31 23:59:59','1:1:1'), SUBTIME('02:02:02','02:00:00');
+----------------------------------------+--------------------------------+
| SUBTIME('2000-12-31 23:59:59','1:1:1') | SUBTIME('02:02:02','02:00:00') |
+----------------------------------------+--------------------------------+
| 2000-12-31 22:58:58 | 00:02:02 |
+----------------------------------------+--------------------------------+
1 row in set (0.00 sec)
二八 使用DATEDIFF()函数计算两个日期之间的间隔天数
SELECT DATEDIFF('2010-12-31 23:59:59','2010-12-30') AS col1,
DATEDIFF('2010-11-30 23:59:59','2010-12-31') AS col2;
+------+------+
| col1 | col2 |
+------+------+
| 1 | -31 |
+------+------+
1 row in set (0.01 sec)
二九 使用DATE_FORMAT()函数格式化输出日期和时间值
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;
+-----------------------+--------------------------+
| col1 | col2 |
+-----------------------+--------------------------+
| Saturday October 1997 | 4th 97 Sat 04 10 Oct 277 |
+-----------------------+--------------------------+
1 row in set (0.01 sec)
三十 使用TIME_FORMAT()函数格式化输入时间值
mysql> SELECT TIME_FORMAT('16:00:00', '%H %k %h %I %l');
+-------------------------------------------+
| TIME_FORMAT('16:00:00', '%H %k %h %I %l') |
+-------------------------------------------+
| 16 16 04 04 4 |
+-------------------------------------------+
1 row in set (0.00 sec)
三一 使用GET_FORMAT()函数显示不同格式化类型下的格式字符串
mysql> SELECT GET_FORMAT(DATE,'EUR'), GET_FORMAT(DATE,'USA');
+------------------------+------------------------+
| GET_FORMAT(DATE,'EUR') | GET_FORMAT(DATE,'USA') |
+------------------------+------------------------+
| %d.%m.%Y | %m.%d.%Y |
+------------------------+------------------------+
1 row in set (0.01 sec)
三二 在DATE_FORMAT()函数中,使用GET_FORMAT函数返回的显示格式字符串来显示指定的日期值
mysql> SELECT DATE_FORMAT('2000-10-05 22:23:00', GET_FORMAT(DATE,'USA') );
+-------------------------------------------------------------+
| DATE_FORMAT('2000-10-05 22:23:00', GET_FORMAT(DATE,'USA') ) |
+-------------------------------------------------------------+
| 10.05.2000 |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
还没有评论,来说两句吧...