MySQL日期函数

1、DATE()

返回 日期。格式:YYYY-MM-DD

SELECT DATE(NOW());
> 2022-04-04

2、TIME()

返回 日期。格式:HH-mm-ss

SELECT TIME(NOW());
> 16:25:09

3、TIMESTAMP()

返回 日期时间。格式:YYYY-MM-DD HH-mm-ss

SELECT TIMESTAMP(NOW());
> 2022-04-04 16:31:12

4、NOW()、CURRENT_TIMESTAMP、CURRENT_TIMESTAMP()、SYSDATE()

select NOW(),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP();
> 2022-04-04 16:40:03	2022-04-04 16:40:03	2022-04-04 16:40:03

这里需要注意前三者都是**返回语句执行开始执行的时间,后者SYSDATE()不同返回的是这个函数执行时候的时间**

select SLEEP(1),NOW(),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP(),SYSDATE();
> 0 2022-04-04 16:42:22	2022-04-04 16:42:22	2022-04-04 16:42:22	2022-04-04 16:42:23

这里可以看到我们利用sleep(1),让sql延时了一秒得到前三者与seelp(1)的区别SYSDATE()明显比NOW()这些多一秒,所以我们可以知道 预期结果是延时前后now()函数对应的时间不变,sysdate()的时间等于之前的时间加上延时时间

5、STR_TO_DATE()

根据指定的格式,将字符串转交成对应的日期或日期类型

1SELECT STR_TO_DATE('2022-04-04 22:50:17','%Y-%m-%d');
> 2022-04-04
没有时分秒时这里就忽略显示了

例2SELECT STR_TO_DATE('2022-04-04 22:50:17','%Y-%m-%d %H');
> 2022-04-04 22:00:00

6、DATE_FORMAT()

将日期根据指定的格式返回为对应的字符串
更多日期格式

1SELECT DATE_FORMAT('2022-04-04 22:50:17','%Y-%m-%d');
> 2022-04-042SELECT DATE_FORMAT('2022-04-04 22:50:17','%Y-%m-%d %H');
> 2022-04-04 22

7、UNIX_TIMESTAMP()

获取日期的时间戳(10位)

SELECT unix_timestamp(now());
> 1649083817

8、FROM_UNIXTIME()

根据时间戳(10位)返回日期

1SELECT FROM_UNIXTIME(1649087115)
> 2022-04-04 23:45:152、加上第二个参数 格式化
SELECT FROM_UNIXTIME(1649087115,'%Y-%m-%d')
> 2022-04-04

9、DATEDIFF

用法:DATEDIFF(expr1,expr2)
计算expr1expr2的天数

# 只计算日期部分1select NOW(),DATEDIFF(NOW(),'2023-01-13 11');
>  2023-01-11 15:53:33	-22select NOW(),DATEDIFF(NOW(),'2023-01-09');
> 2023-01-11 15:55:53	2

10、EXTRACT

用法:EXTRACT (unit FROM date) 提取对应日期单位(与时间间隔相同)的值

1select NOW(),EXTRACT(YEAR_MONTH from NOW())
> 2023-01-11 16:31:26	  2023012select NOW(),EXTRACT(MINUTE_MICROSECOND from NOW())
> 2023-01-11 16:31:44	  3144000000

11、TIMESTAMPDIFF

TIMESTAMPDIFF(unit,date1,date2)
返回日期或日期时间表达式datetime_expr1和datetime_expr2之间的整数差。结果的单位由单位参数给定

SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
> 3
SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
> -1

12、SEC_TO_TIME

SEC_TO_TIME(SECOND)
将秒数转换成时间 格式是 00:00:00

select SEC_TO_TIME(3600);
> 01:00:00

> select SEC_TO_TIME(48);
> 00:00:48

13、TIME_TO_SEC

TIME_TO_SEC(TIME)
将时间转换为秒数。与SEC_TO_TIME相反

select TIME_TO_SEC('11:00:01');
> 39601

select TIME_TO_SEC('101:00:01');
> 363601

14、其他日期函数

函数名描述样例结果
NOW()获取当前日期 格式’yyyy-MM-dd HH:mm:ss’select NOW();2022-04-04 22:50:17
CURDATE()获取当前日期 格式’yyyy-MM-dd’select CURDATE();2022-04-04
CURTIME()获取当前日期 格式’HH:mm:ss’select CURTIME();22:50:17
CURRENT_TIMESTAMP()获取当前日期 格式’yyyy-MM-dd HH:mm:ss’select CURRENT_TIMESTAMP();2022-04-04 22:50:17
CURRENT_DATE()获取当前日期 格式’yyyy-MM-dd’select CURRENT_DATE();2022-04-04
CURRENT_TIME()获取当前日期 格式’HH:mm:ss’select CURRENT_TIME();22:50:17
CURRENT_TIMESTAMP获取当前日期 格式’yyyy-MM-dd HH:mm:ss’select CURRENT_TIMESTAMP;2022-04-04 22:50:17
CURRENT_DATE获取当前日期 格式’yyyy-MM-dd’select CURRENT_DATE;2022-04-04
CURRENT_TIME获取当前日期 格式’HH:mm:ss’select CURRENT_TIME;22:50:17
SYSDATE()获取这个函数的执行时间 格式’yyyy-MM-dd HH:mm:ss’select SYSDATE;2022-04-04 22:50:17
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

15、日期格式

格式描述
%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)
%pAM 或 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 使用

时间间隔

时间间隔用于某些函数,例如 DATE_ADD()DATE_SUB()

*unit*价值预期*expr*格式描述
MICROSECONDMICROSECONDS微秒
SECONDSECONDS
MINUTEMINUTES分钟
HOURHOURS小时
DAYDAYS
WEEKWEEKS星期
MONTHMONTHS
QUARTERQUARTERS季度
YEARYEARS
SECOND_MICROSECOND'SECONDS.MICROSECONDS'秒.微秒
MINUTE_MICROSECOND'MINUTES:SECONDS.MICROSECONDS'分钟:秒.微秒
MINUTE_SECOND'MINUTES:SECONDS'分钟:秒
HOUR_MICROSECOND'HOURS:MINUTES:SECONDS.MICROSECONDS'小时:分钟:秒.微秒
HOUR_SECOND'HOURS:MINUTES:SECONDS'小时:分钟:秒
HOUR_MINUTE'HOURS:MINUTES'小时:分钟
DAY_MICROSECOND'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'天 小时:分钟:秒.微秒
DAY_SECOND'DAYS HOURS:MINUTES:SECONDS'天 小时:分钟:秒
DAY_MINUTE'DAYS HOURS:MINUTES'天 小时:分钟
DAY_HOUR'DAYS HOURS'天 小时
YEAR_MONTH'YEARS-MONTHS'年-月
  • 8
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假女吖☌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值