1.获取系统当前时间函数
SELECT NOW(),CURRENT_DATE(),CURRENT_TIME(),CURRENT_TIMESTAMP(),UNIX_TIMESTAMP()
2.时间的格式化
SELECT TIME(NOW()),DATE(NOW()),NOW(),FROM_UNIXTIME(UNIX_TIMESTAMP()),UNIX_TIMESTAMP()
3.时间加减一个固定时间
-
DATE类型的加减
SELECT DATE_ADD(DATE(NOW()),INTERVAL 10 DAY), DATE(NOW()); # 加10天 SELECT DATE_SUB(DATE(NOW()),INTERVAL 10 DAY), DATE(NOW()); # 减10天
-
TIME类型的加减
SELECT DATE_ADD(TIME(NOW()),INTERVAL 10 HOUR), TIME(NOW()); # 加10个小时 SELECT DATE_SUB(TIME(NOW()),INTERVAL 10 HOUR), TIME(NOW()); # 减10个小时
-
DATETIME类型的加减
SELECT DATE_ADD(NOW(),INTERVAL 1 MONTH), NOW(); # 加一个月 SELECT DATE_SUB(NOW(),INTERVAL 1 MONTH), NOW(); # 减一个月
-
TIMESTAMP类型的加减
可通过FROM_UNIXTIME()把时间戳转为前面三种的其中一种SELECT DATE_ADD(FROM_UNIXTIME(UNIX_TIMESTAMP()),INTERVAL 1 YEAR), FROM_UNIXTIME(UNIX_TIMESTAMP()), UNIX_TIMESTAMP(); # 加一个年 SELECT DATE_SUB(FROM_UNIXTIME(UNIX_TIMESTAMP()),INTERVAL 1 YEAR), FROM_UNIXTIME(UNIX_TIMESTAMP()), UNIX_TIMESTAMP(); # 减一个年
DATE_ADD() 函数向日期添加指定的时间间隔。
DATE_SUB() 函数向日期减少指定的时间间隔。
语法
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
date 参数是合法的日期表达式。
expr参数是您希望添加的时间间隔。
type 参数可以是下列值:
Type 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
4.两个时间的加减
-
DATEDIFF(date1, date2):比较天数,与时间无关 date1 - date2
SELECT DATEDIFF('2013-01-13','2012-10-01'),DATEDIFF('2013-01-13 13:13:13','2012-10-01 16:16:16'),DATEDIFF('13:13:13','16:16:16');
-
TIMEDIFF(time1, time2) : 时间差 time1 - time2
TIMEDIFF
函数的结果是一个TIME
值,范围是从-838:59:59
到838:59:59
。 因此,MySQL会截断结果。SELECT TIMEDIFF('2013-01-13','2012-10-01'),TIMEDIFF('2013-01-13 13:13:13','2012-10-01 16:16:16'),TIMEDIFF('13:13:13','16:16:16');
-
TIMESTAMPDIFF(type, ts1, ts2) : 根据type,计算两个时间(ts2 - ts1)相差多少天、月、年等
SELECT TIMESTAMPDIFF(DAY, '2013-01-13','2012-10-01'),TIMESTAMPDIFF(MONTH, '2013-01-13 13:13:13','2012-10-01 16:16:16'),TIMESTAMPDIFF(HOUR, '13:13:13','16:16:16');
- frac_second 毫秒(低版本不支持,用second,再除于1000)
- second 秒
- minute 分钟
- hour 小时
- day 天
- week 周
- month 月
- quarter 季度
- year 年
5.获取时间上面的单个值
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()), DAYNAME(NOW()), HOUR(NOW()), MINUTE(NOW()), SECOND(CURRENT_DATE()), NOW(), CURRENT_DATE()
MONTH(date)
MONTHNAME(date)
DAYNAME(date)
DAY(date),DAYOFMONTH(date):1-31或者0
DAYOFWEEK(date):1-7==>星期天-星期六
DAYOFYEAR(date): 1-365(366)
WEEK(date[,mode]):判断是一年的第几周,如果1-1所在周在新的一年多于4天,则将其定为第一周;否则将其定为上一年的最后一周。mode是用来人为定义一周从星期几开始。
WEEKOFYEAR(date):类似week(date,3),从周一开始计算一周。
QUARTER(date):返回1-4
HOUR(time):返回时间中的小时数,可以大于24
MINUTE(time):
SECOND(time):
EXTRACT(unit FROM date):提取日期时间中的要素