1. 年月日
1. 当前年月日
-
三种方式都可直接进行四则运算(如:CURRENT_DATE + 1),运算后返回数据格式为yyyyMMdd
-
未经运算返回的数据格式为yyyy-MM-dd
1. CURDATE()
2. CURRENT_DATE
3. CURRENT_DATE()
2. 提取年月日
- 函数中传入time类型数据,提取的年月日为:0000-00-00
- 函数后可直接进行四则运算(如:DATE(2021-05-14 11:22:52) + 1),运算后返回数据格式为yyyyMMdd
1. DATE(date|datetime|timestamp)
3. 日期加减
1. DATE_ADD(date|datetime|timestamp,INTERVAL exp unit)
exp为正数时为加,负数为减,不能进行乘除运算
示例(加):SELECT DATE_ADD('2017-11-13 20:20:20', INTERVAL '1 1:1:3.1' DAY_MICROSECOND)
示例(减):SELECT DATE_ADD('2017-11-13 20:20:20', INTERVAL '- 1 1:1:3.1' DAY_MICROSECOND)
2. DATE_SUB(date|datetime|timestamp,INTERVAL exp unit)
exp为正数时为减,负数为时间加,不能进行乘除运算
3. 单独使用INTERVAL进行时间加减(运算符必须放在Interval前边)
select '2017-11-13 20:20:20' -INTERVAL '1 1:1:3.1' DAY_MICROSECOND
4. ADDDATE(date|datetime|timestamp,INTERVAL expr unit),(同DATE_ADD函数)
select ADDDATE('2017-11-13 20:20:20', INTERVAL '-1 1:1:3.1' DAY_MICROSECOND)
5. ADDDATE(expr,days),只能进行天数的加减
select ADDDATE('2017-11-13 20:20:20',1)
6. DATEDIFF(expr1,expr2),只能计算两个时间的相差天数,不能精确到时分秒
select DATEDIFF('2017-11-13 20:20:20','2017-12-13 20:20:21'
- INTERVAL为关键字,exp为运算数字,unit 为说明符(unit、exp对应格式为图左、右)
4. 日期格式化
1. DATE_FORMAT(date,format)
select DATE_FORMAT('2017-11-13 08:20:20','%p %Y-%m-%d %h:%i:%s')
格式化标识符 | 标识符格式化的代表位置 | 位数 |
---|---|---|
%Y | 年 | 4位 |
%y | 年 | 2位 |
%M | 英文月 | January |
%m | 月 | 2位(01-12) |
%D | 带英文后缀的日 | 如1st,2nd |
%d | 日 | 2位(01-31) |
%H | 时 | 2位,24小时制 |
%h | 时 | 2位,12小时制 |
%i | 分 | 2位(00-59) |
%S或%s | 秒 | 2位(00-59) |
%p | 上午、下午标识 | PM 或AM |
%r | 时分秒带上、下午标识 | HH:mm:ss PM形式时间 |
%W | 英文当天是周几 | 如Tuesday |
%w | 周 | 0-6,0为周日 |
%j | 当前日期所在一年中的天数 | 3位(001-366) |
2. 时间
1. 当前时间
1. CURTIME()
2. CURRENT_TIME
3. CURRENT_TIME()
2. 时间加减
1. SUBTIME(expr1,expr2),获得前者减去后者后的具体时间
select SUBTIME('2017-11-13 20:20:20', '20:20:21') = 2017-11-12 23:59:59
select SUBTIME('2017-11-13 20:20:20', '- 20:20:21') = 2017-11-14 16:40:41
3. 时间转为妙
1. TIME_TO_SEC(time),只读取时间部分进行转换
select TIME_TO_SEC('2017-11-13 20:20:21') = 73220
select TIME_TO_SEC('2021-05-17 20:20:21') = 73221
3. 年月日时间
1. 当前年月日时间
1. CURRENT_TIMESTAMP
2. CURRENT_TIMESTAMP()
3. LOCALTIME()
4. LOCALTIME
5. LOCALTIMESTAMP
6. LOCALTIMESTAMP()
7. NOW()
2. 系统年月日时间
1. SYSDATE(),真正的系统时间,不受mysql的SLEEP()等函数的影响
3. 年月日时间加减
1. TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2),unit为精确度,可参考日期部分
select TIMESTAMPDIFF(SECOND,'2017-11-13 20:20:26','2017-11-13 20:20:23') = -3
4. MYSQL所有时间函数