mysql获取 日期时间 的函数
mysql 日期时间函数 | 描述 |
---|---|
NOW([fps]) / CURRENT_TIMESTAMP([fps]) / LOCALTIMESTAMP(fps) / LOCALTIME([fps]) |
返回当前的日期和时间(datetime),(参数 fps 可选,默认为2,秒的精度,取值 [0,6] ) |
CURDATE() / CURRENT_DATE() |
返回当前日期(date),只包含年月日,默认格式: YYYY-MM-DD |
CURTIME([fps]) / CURRENT_TIME([fps]) |
返回当前时间(time),只包含 时分秒(参数 fps 可选,默认为2,秒的精度,取值 [0,6] ),默认格式:YYYY-MM-DD HH:MM:SS |
UNIX_TIMESTAMP(date) |
返回当前日期 date 的 UNIX 时间戳 |
FROM_UNIXTIME |
返回 UNIX 时间戳的日期值 |
MONTHNAME(date) |
返回日期 date 的月份 的英文名称 |
SELECT DAYNAME(NOW()) |
返回日期 date 的 星期几 的英文名称 |
DATE_FORMAT(date, fmt) |
返回字符串fmt格式化后的日期 date 值 |
DATE_ADD(date, INTERVAL expr unit) |
返回给一个日期/时间date 加上一个时间间隔 expr 之后的值。 |
DATE_SUB(date, INTERVAL expr unit) |
返回给一个日期/时间date 减去一个时间间隔 expr 之后的值。 |
DATEDIFF(expr1, expr1) |
返回起始时间 expr1 和结束时间 expr2 之间的间隔天数 |
TIMEDIFF(expr1, expr2) |
返回两个日期(时间) date 相差的天数(expr1 - expr2) |
函数名 | 描述 |
---|---|
YEAR(expr) | 返回指定日期时间的 年份 部分(格式yyyy ),案例:SELECT YEAR(NOW()) ,返回当前时间的年份 |
MONTH(expr) | 返回指定日期时间的 月份 部分 |
DAY(expr) | 返回指定日期时间的 **日期 ** 部分 |
HOUR(expr) | 返回指定日期时间的 小时 部分 |
MINUTE(expr) | 返回指定日期时间的 分钟 部分 |
SECOND(expr) | 返回指定日期时间的 秒 部分 |
MICROSECOND(expr) | 返回指定日期时间的 微秒 部分 |
QUARTER(expr) | 返回指定日期时间的 季度 部分 |
WEEK(expr) | 返回指定日期时间的 周 部分 |
DATE(expr) | 返回指定日期时间的 日期 date 部分 |
TIME(expr) | 返回指定日期时间的 时间部分 部分 |
1. 获得当前日期时间(datetime) 的主要函数:NOW()
和 SYSDATE()
函数 NOW()
和 SYSDATE()
的区别:
NOW()
和SYSDATE()
都表示当前时间,但是使用上有一点点区别。
NOW()
取的是语句开始执行的时间,SYSDATE()
取的是动态的实时时间。
这是因为NOW()
取自mysql的一个变量TIMESTAMP
,而这个变量在语句开始执行的时候就设定好了,因此在整个语句执行过程中都不会变化。
比如下面这个SQL查询:SELECT NOW(),SYSDATE(), SLEEP(2) AS '等待2s', NOW(),SYSDATE()
查询结果:
发现两次查询NOW()
的时间是一样的,但是两次SYSDATE()
的时间不同,是动态的实时时间。
我们一般使用NOW()
而不用SYSDATE()
函数
还有三个获取时间的函数,效果跟 NOW()
的一样
LOCALTIME()
LOCALTIMESTAMP()
CURRENT_TIMESTAMP()
NOW([fps])
函数
返回服务器的当前日期和时间(datetime对象)
参数 fsp
可选,用于指定小数秒的精度,不写默认显示2位(取值范围 [0,6]
)
NOW() 函数默认返回两种格式:YYYY-MM-DD HH:MM:SS
或 YYYYMMDDHHMMSS
NOW()
:返回YYYY-MM-DD HH:MM:SS
格式
NOW()
: 返回YYYYMMDDHHMMSS
格式
select NOW(), NOW()+0, NOW(0), NOW(6)
运行:
2. 日期时间的运算函数(加减时间间隔)
DATE_ADD(date, INTERVAL expr type)
和DATE_SUB(date, INTERVAL expr type)
分别是对时间进行增加/减少之后的值。
INTERVAL
是关键字,表示间隔的类型
expr
是表达式,也就是间隔数值
unit
是时间间隔的单位,主要有以下取值单位(年月日时分秒等)
unit的取值
unit 时间间隔单位取值 | 描述 |
---|---|
YEAR | 年 |
MONTH | 月 |
DAY | 日 |
HOUR | 时 |
MINUTE | 分 |
SECOND | 秒 |
MICROSECOND | 毫秒 |
QUARTER | 季节(3个月) |
WEEK | 周 |
YEAR_MONTH | 年和月 |
DAY_HOUR | 日和时 |
DAY_MINUTE | 日和分 |
DAY_ SECOND | 日和秒 |
HOUR_MINUTE | 时和分 |
HOUR_SECOND | 时和秒 |
MINUTE_SECOND | 分和秒 |
-- 给当前时间加三小时
SELECT NOW(),DATE_ADD(NOW(),interval 1+2 HOUR)
-- 2021-03-18 00:00:00 加18小时18分后的时间
SELECT DATE_ADD('2021-03-18 00:00:00',interval '18:18' HOUR_MINUTE)
函数EXTRACT(unit FROM datetime)
,从日期时间中抽取出某个单独的部分或者组合部分。
比如:
-- 从当前的日期时间中,抽取出 时分 组合部分
select EXTRACT(HOUR_MINUTE FROM NOW())