MySQL日期函数
2022-07-31 本文已影响0人
fanderboy
1、DATE()
返回 日期。格式:YYYY-MM-DD
SELECT DATE(NOW());
2022-07-31
2、TIME()
返回 时间。格式:HH-mm-ss
SELECT TIME(NOW());
19:00:43
3、TIMESTAMP()
返回 日期时间。格式:YYYY-MM-DD HH:mm:ss
SELECT TIMESTAMP(NOW());
2022-07-31 19:01:40
4、NOW()、CURRENT_TIMESTAMP、CURRENT_TIMESTAMP()、SYSDATE()
select NOW(),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP();
2022-07-31 19:03:00 2022-07-31 19:03:00 2022-07-31 19:03:00
这里需要注意前三者都是返回语句执行开始执行的时间,后者SYSDATE()不同返回的是这个函数执行时候的时间
select SLEEP(1),NOW(),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP(),SYSDATE();
0 2022-07-31 19:04:16 2022-07-31 19:04:16 2022-07-31 19:04:16 2022-07-31 19:04:17
这里可以看到我们利用sleep(1),让sql延时了一秒得到前三者与SYSDATE()的区别,SYSDATE()明显比NOW()这些多一秒,所以我们可以知道 预期结果是延时前后now()函数对应的时间不变,sysdate()的时间等于之前的时间加上延时时间
5、STR_TO_DATE()
根据指定的格式,将字符串转交成对应的日期类型
SELECT STR_TO_DATE('2022-07-31 19:12:47','%Y-%m-%d');
2022-07-31
SELECT STR_TO_DATE('2022-07-31 19:12:47','%Y-%m-%d %H');
2022-07-31 19:00:00
6、DATE_FORMAT()
将日期根据指定的格式返回为对应的字符串
SELECT DATE_FORMAT('2022-07-31 19:12:47','%Y-%m-%d');
2022-07-31
SELECT DATE_FORMAT('2022-07-31 19:12:47','%Y-%m-%d %H');
2022-07-31 19
SELECT DATE_FORMAT('2022-07-31 19:12:47','%Y-%m-%d %H:%i:%s');
2022-07-31 19:12:47
日期格式
| 格式 | 描述 |
|---|---|
| %Y | 年,4 位 |
| %y | 年,2 位 |
| %M | 月 英文表示 January |
| %b | 月 英文缩写表示 Apr |
| %m | 月,数值(00-12) |
| %c | 月,数值(0-12) |
| %d | 月的天,数值(00-31) |
| %e | 月的天,数值(0-31) |
| %j | 年的天 (001-366) |
| %H | 小时 (00-23) |
| %I | 小时 (01-12) 0时代表12 1时代表1 |
| %k | 小时 (0-23) |
| %i | 分钟,数值(00-59) |
| %S | 秒(00-59) |
| %s | 秒(00-59) |
| %f | 微秒 |
| %T | 时间, 24-小时 (hh:mm:ss) |
| %r | 时间,12-小时(hh:mm:ss AM 或 PM) |
| %p | AM 或 PM |
| %a | 星期名缩写 例如Mon |
| %W | 星期名 例如Monday |
| %w | 周的天 (0=星期日, 6=星期六) |
| %U | 周 (00-53) 星期日是一周的第一天 |
| %u | 周 (00-53) 星期一是一周的第一天 |
| %V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
| %v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
| %X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
| %x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
7、UNIX_TIMESTAMP()
获取日期的时间戳(10位)
SELECT unix_timestamp(now());
1659266331
8、FROM_UNIXTIME
根据时间戳(10位)返回日期
SELECT FROM_UNIXTIME(1659266331);
2022-07-31 19:18:51
#加上第二个参数 格式化
SELECT FROM_UNIXTIME(1659266331,'%Y-%m-%d %H:%i:%s');
2022-07-31 19:18:51
9、其他日期函数
| 函数名 | 描述 | 样例 | 结果 |
|---|---|---|---|
| NOW() | 获取当前日期 格式’yyyy-MM-dd HH:mm:ss’ | select NOW(); | 2022/4/4 22:50 |
| CURDATE() | 获取当前日期 格式’yyyy-MM-dd’ | select CURDATE(); | 2022/4/4 |
| CURTIME() | 获取当前日期 格式’HH:mm:ss’ | select CURTIME(); | 22:50:17 |
| CURRENT_TIMESTAMP() | 获取当前日期 格式’yyyy-MM-dd HH:mm:ss’ | select CURRENT_TIMESTAMP(); | 2022/4/4 22:50 |
| CURRENT_DATE() | 获取当前日期 格式’yyyy-MM-dd’ | select CURRENT_DATE(); | 2022/4/4 |
| CURRENT_TIME() | 获取当前日期 格式’HH:mm:ss’ | select CURRENT_TIME(); | 22:50:17 |
| CURRENT_TIMESTAMP | 获取当前日期 格式’yyyy-MM-dd HH:mm:ss’ | select CURRENT_TIMESTAMP; | 2022/4/4 22:50 |
| CURRENT_DATE | 获取当前日期 格式’yyyy-MM-dd’ | select CURRENT_DATE; | 2022/4/4 |
| CURRENT_TIME | 获取当前日期 格式’HH:mm:ss’ | select CURRENT_TIME; | 22:50:17 |
| SYSDATE() | 获取这个函数的执行时间 格式’yyyy-MM-dd HH:mm:ss’ | select SYSDATE; | 2022/4/4 22:50 |
| YEAR() | 获取年份 | select YEAR(NOW()) ; | 2022 |
| MONTH() | 获取月份 | select MONTH(NOW()) | 4 |
| DAYOFMONTH() | 获取在月份中所在的天数 | select DAYOFMONTH(NOW()) | 4 |
| DAYOFYEAR() | 获取在年中所在的天数 | select DAYOFYEAR(NOW()) | 94 |
| WEEKDAY() | 获取日期是星期几 (0-代表星期一、1-代表星期二) | select WEEKDAY(NOW()); | 0 |
| DAYOFWEEK() | 获取日期是星期几 (1-代表星期天、2-代表星期一) | select DAYOFWEEK(NOW()); | 2 |
| WEEKOFYEAR() | 获取日期是年中的第几周 | select WEEKOFYEAR(NOW()); | 14 |
| TO_DAYS() | 获取从0000-00-00到日期的天数 | SELECT TO_DAYS(NOW()); | 738614 |
| HOUR() | 获取小时 | SELECT HOUR(NOW()); | 22 |
| MINUTE() | 获取分钟 | SELECT MINUTE(NOW()); | 50 |
| SECOND() | 获取秒 | SELECT SECOND(NOW()); | 17 |