MySQL日期函数

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

你可能感兴趣的:(MySQL日期函数)