mysql日期操作
一、获取当前日期时间
1.1、获得当前日期+时间(date+time)函数:now()
1.2、获取当前日期+时间(date+time)函数:sysdate()
注:二者类拟,不同在于now()在执行时就得到了,sysdate()执行时动态得到。
2、获取当前日期:curdate(),与current_date()等同
3、获得当前时间:curtime(),与current_time()等同
4、获取当前UTC日期时间:utc_date()、utc_time()、utc_timestamp()。标准0时区时间
二、日期时间Extract(选取)
1、选取时间时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒
set @dt='2017-10-11 14:20:31.2341'
日期:date(@dt)
时间:time(@dt)
年份:year(@dt)
季份:quarter(@dt)
月份:month(@dt)
天份:day(@dt)
小时:hour(@dt)
分钟:minute(@dt)
秒钟:second(@dt)
毫秒:microsecond(@dt)
2、Extract(),可以实现类拟的功能。略
3、dayof函数:dayofweek()、dayofmonth()、dayofyear()
分别返回日期参数在一周、一月、一年中的位置
set @dt='2017-10-11'
dayofweek(@dt)、dayofmonth(@dt)、dayofyear(@dt)
4、week函数:week()、weekofyear()、dayofweek()、weekday()、yearweek()
week()与weekofyear()类拟,都是计算‘某天’位于一年中的第几周
weekday()与dayofweek()类拟,返回‘某天’在一周中的位置。参考点不同
5、返回星期和月份:dayname(@dt)、monthname(@dt)
6、last_day(@dt):返回月份中的最后一天
三、日期时间计算
1、为日期增加一个时间间隔:date_add(@dt,interval (-)整数 单位)。单位:day、hour、minute等
adddate()、addtime()可以用date_add()代替。建议总是用date_add()
2、为日期减去一个时间间隔:date_sub()。与date_add()用法一致
3、另类时间函数:period_add(P,N)、period_diff(P1、P2),很少用到
period_add参数"P"的格式为“YYYYMMDD”或“YYYYMM”,第二个参数"N"表示增加或减去N 月。
period_diff返回P1-P2个月
4、日期、时间相减函数:datediff(date1、date2)、timediff(time、time2)
datediff(date1,date2):返回date1-date2的天数
timediff(time1,time2):返回time1-time2的差值(时间部分)
注:timediff(time1,time2)参数类型必须相同
四、日期转换函数、时间转换函数
1、(时间、秒)转换:time_to_sec(time),sec_to_time(seconds)
2、(日期、天数)转换:to_days(date)、from_days(days)
3、(字符串转换为日期):str_to_date(str,fromat)
select str_to_date('08.09.2008', '%m.%d.%Y');
4、(日期/时间)转为字符串:date_format(date,format)、time_format(time,format)
date_format('2008-08-08 22:23:00', '%W %M %Y');
time_format('22:23:01', '%H.%i.%s');
5、获得国家地区时间格式函数:get_fomat()。很少用到
6、拼凑时间、时间:makedate(year,dayofyear)、maketime(hour,minute,second)
makedate(2001,32); -- '2001-02-01'
maketime(12,15,30); -- '12:15:30'
五、时间戳(timestamp)
1、获取当前时间戳:current_timestamp、current_timestamp()
2、(unix时间戳、日期)转换
unix_timestamp(),unix_timestamp(); -- 1218290027
unix_timestamp(date),unix_timestamp('2008-08-08 12:30:00'); -- 1218169800
from_unixtime(unix_timestamp),from_unixtime(1218169800); -- '2008-08-08 12:30:00'
from_unixtime(unix_timestamp,format),from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); -- '2008 8th August 12:30:00 2008'
3、时间戳转换、增、减
timestamp(date)
timestamp(dt,time)
timestampadd(unit,interval,datetime_expr)
timestampdiff(unit,datetime_expr1,datetime_expr2)
六、时区转换
convert_tz(dt,from_tz,to_tz)
时区转换也可以通过 date_add,date_sub,timestampadd来实现