日期查询
1)查询当前时间日期
now()
获取 当前日期和时间 //2018-04-12 18:18:57curdate()
当前日期,///2018-04-12curtime()
当前时间 //18:18:57current_time()
; //同curtime(),current_time
current_date()
; // 同curdate(),current_date
current_timestamp()
//同now()
2)时间戳
unix_timestamp([date])
将日期转化为时间戳,参数可以不写默认now()
- date 可以是日期时间类型 也可以是时间字符串 ‘2018-2-12’
mysql> select from_unixtime(unix_timestamp('2018:4:8'));
+------------------------------------------------+
| from_unixtime(unix_timestamp('2018:4:8')) |
+------------------------------------------------+
| 2018-04-08 00:00:00 |
from_unixtime(timestamp [,pattern])
根据format格式化时间戳
- timestamp : 时间戳即 UNIX_TIMESTAMP()
- pattern 目标的模式字符串。使用format参数后返回的结果是字符串。常用的时间格式化占位符如下更多参数请参考,
- %Y 年,四位数字
- %y 年,后两位数字
- %m 月 ,数字[1-12]
- %d 日,月份里的第几天,两位数字[1-31]
- %H 小时,24进制 [0-23]
- %h 小时,12进制[0-11]
- %i 分钟 [0-59]
- %s | %S 秒 0-59
3)时间截取(返回对应的日期,时间或者数字)
date(expr)
// 如果解析失败返回Null,返回日期类型datetime(expr)
//返回时间类型 timetimestamp(exper,format)
//返回混合日期和时间,datetime 类型year(expr)
//返回数字month(expr)
//返回数字【1-12】day(expr)
//返回数字【1-31】hour(expr)
//返回数字【0-23】minute(expr)
//返回数字【0-59】last_day(date)
//返回最后一天 ,返回date类型 //2018-04-30to_days(expr)
//返回到公元0年一月一日的总天数
expr :时间字符串,日期字符串或者日期时间类型。
对于截取年,月,日,时,分,秒返回的都是对应的字符串,因为时间日期类型mysql 本身就只提供了date,time ,datetime,timestamp,year这五种类型select date(now()),time('2018-04-19 11:10:11'),year(now()),to_days(now()); 2018-04-19 11:10:11 2018 737168
日期操作
ADDDATE(date,INTERVAL expr unit)
- date 要操作的日期时间,可以是日期类型也可以是日期字符串
- INTERVAL: MySQL关键字 ,意思是间隔,间隙
- unit 操作的单元,年,月,日,时,分,秒对应YEAR,MONTH,DAY,HOUR,MINUTE,SECOND
- expr 想要增加或减少的时间单位。expr>0,增加,expr<0减少
DATE_ADD(date,INTERVAL expr unit)
类似ADDDATE()- 返回结果是字符串
ADDTIME(expr1,expr2)
时间相加 expr1+expr2
SUBDATE(date,INTERVAL expr unit)
同DATE_SUB(date,INTERVAL expr unit)
DATEDIFF(expr1, expr2)
计算两个表达式之间的时间差(expr1-expr2 )天,
SELECT
DATEDIFF(
'2018-4-23',
'2018-4-12 12:12:23'),
DATEDIFF(
now(),
DATE_ADD(now(), INTERVAL 12 DAY)
)
11 -12
日期时间类型转字符串
DATE_FORMAT(date,pattern)
//转为字符串TIME_FORMAT(date,pattern)
//只能转化时间,不能转化日期from_unixtime(timestamp,pattern)
//时间戳转为字符串
select DATE_FORMAT(now(),'%Y-%m-%d %H:%i-%s'),TIME_FORMAT(now(),'%Y-%m-%d %H:%i-%s');
2018-04-23 15:15-26 0000-00-00 15:15-26
字符串转时间
str_to_date(dateStr,pattern)
- dateStr :字符串日期表达式
- pattern :匹配模式
select str_to_date('2017/12/23','%Y/%m/%d');
2017-12-23