1)TIMESTAMPDIFF函数
TIMESTAMPDIFF(unit,begin,end); 根据单位返回时间差,对于传入的begin和end不需要相同的数据结构,可以存在一个为Date一个DateTime,
其中unit可以为
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
例子:
计算年份差值
select TIMESTAMPDIFF(year,'1989-01-1','2019-01-11')
返回30【满一年】
select TIMESTAMPDIFF(year,'1989-01-11','2019-01-11')
返回30【满一年】
select TIMESTAMPDIFF(year,'1989-01-12','2019-01-11')
返回29【差一天,不满一年就算0】
2)date_format
DATE_FORMAT(date,format),用于以不同的格式显示日期/时间数据,format形式为%需要的格式,
例子:
select date_format(NOW(),'%Y')
返回2019
select date_format(paidTime,'%Y-%m'),count(1) from orderinfo
group by date_format(paidTime,'%Y-%m');#按年月分组,求总用户量

3)yearweek函数
函数形式为 YEARWEEK(date[,mode]),mode表示指定每周的第一天是星期几,默认0是周日,1是周一。
例子:
select YEARWEEK(curdate())
返回201901表明现在是2019的第2个星期(默认从0开始)
4)extract函数
EXTRACT(unit FROM date) 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟【这些由unit参数指定】等等
例子:
select extract(month from curdate())
返回1
注:
select now(),curdate()
返回

now():返回的包括当前时间
curdate():只返回Y-M-D
5)DATE_ADD() 函数,DATE_SUB() 函数(减少),DATEDIFF()(差值)
--DATE_ADD(date,INTERVAL expr type)函数向日期添加指定的时间间隔,其中,date 参数是日期表达式,expr 参数是添加的时间间隔,type 参数指定时间间隔类型
例子:输出明天的年月日
select date_add(curdate(),INTERVAL 1 day)
返回2019-01-12
--DATE_SUB(date,INTERVAL expr type),从日期减去指定的时间间隔
SELECT DATE_sub('2008-12-30',interval 1 day)#减去一天
返回2008-12-29
--DATEDIFF(date1,date2) 函数返回两个日期之间的天数
SELECT DATEDIFF('2008-12-30','2008-12-29')
返回1(第一个值减去后面那个值)
SELECT DATEDIFF('2008-12-29','2008-12-30')
返回-1(第一个值减去后面那个值)
注:上面的date参数必须是合法的日期格式,如果只有年月,比如
date_sub('2019-07', interval 1 month)
会返回null
6)常规日期函数date(),time(),year(),quarter(),month(),week(),day(),hour(),minute(),second(),
microsecond()
例子:
set @dt='2008-09-10 07:15:30.123456';
select date(@dt),time(@dt),
year(@dt),quarter(@dt),#季度
month(@dt),week(@dt),
day(@dt),hour(@dt),
minute(@dt),second(@dt),
microsecond(@dt);

注:
week(date[,mode])这个函数有两个参数,第二个参数mode用于指定每周的第一天是周日【mode=0,默认】还是周一【mode=1】
注:关于日期格式的问题,注意大小写代表不同的意义


例子:%M和%m,分别表示月份名称和月份数值
SELECT DATE_format('2008-12-30','%m') as t1,DATE_format('2008-12-30','%M') as t2

网友评论