本篇文章主要介绍SQL语句中的时间函数的用法,包括:now,curdate,curtime,date,extract,date_add,date_sub,DATEDIFF,DATE_FORMAT一共9个函数,满足日常开发需求!


前言

我们在使用MySQL定义表时,常用的时间类型有:
date(最常用,其格式为:YYYY-MM-DD),
datetime(不常用,其格式为:YYYY-MM-DD HH:MM:SS),
timestamp(不常用,其格式为:YYYY-MM-DD HH:MM:SS),
year(没用过,其格式为:YYYY)


1、now()

返回当前日期时间

-- 返回当前日期时间,如:2021-03-17 14:44:06
select now();

2、curdate()

返回当前日期

-- 返回当前日期,如:2021-03-17
select curdate();

3、curtime()

返回当前时间

-- 返回当前时间,如:14:46:00
select curtime();

4、date(date)

提取时间的日期部分

-- 如:2021-03-17,(now()可换成具体的字段)
select date(now());

5、extract(expr from date)

返回时间的指定部分的值,(now()可换成具体的字段)其他日期参数详见:https://www.runoob.com/sql/func-extract.html

-- 年:2021,月:3,日:17等等,(now()可换成具体的字段)
select extract(year from now()),extract(month from now()),extract(day from now());

6、date_add(date,interval num expr);


在指定时间上增加指定日期,具体类型有year,month,day等,(now()可换成具体的字段)详情请参考:https://www.runoob.com/sql/func-date-add.html

-- 当前时间延后45天
select date_add(now(),interval 45 day);

7、date_sub(date,interval num expr)

在指定时间上减少指定日期,具体类型有year,month,day等,(now()可换成具体的字段)详情请参考:

-- 当前时间向前45天
select date_sub(now(),interval 45 day);

8、DATEDIFF(date1,date2)

DATEDIFF计算两个日期之间间隔的天数,(时分秒不参与计算)

-- 计算'2009-11-11 13:23:44.657'与'2008-11-10 14:23:44.657'之间相隔的天数,可能有负数
SELECT DATEDIFF('2009-11-11 13:23:44.657','2008-11-10 14:23:44.657')

9、DATE_FORMAT(date,“日期格式”)

按照自定义格式输出日期,(now()可换成具体的字段),其他格式零件请参考:https://www.runoob.com/sql/func-date-format.html

-- 按照年-月-日的格式输出当前日期
select DATE_FORMAT(now(),"%m-%d-%Y");

总结

参考自:菜鸟教程!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐