MySQL内置一些时间函数的使用

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.时间加减一个固定时间

  1. DATE类型的加减

    SELECT DATE_ADD(DATE(NOW()),INTERVAL 10 DAY), DATE(NOW()); # 加10天
    SELECT DATE_SUB(DATE(NOW()),INTERVAL 10 DAY), DATE(NOW()); # 减10天

  2. TIME类型的加减

    SELECT DATE_ADD(TIME(NOW()),INTERVAL 10 HOUR), TIME(NOW()); # 加10个小时
    SELECT DATE_SUB(TIME(NOW()),INTERVAL 10 HOUR), TIME(NOW()); # 减10个小时

  3. DATETIME类型的加减

    SELECT DATE_ADD(NOW(),INTERVAL 1 MONTH), NOW(); # 加一个月
    SELECT DATE_SUB(NOW(),INTERVAL 1 MONTH), NOW(); # 减一个月

  4. 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.两个时间的加减

  1. 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');

  2. TIMEDIFF(time1, time2) : 时间差 time1 - time2

    TIMEDIFF函数的结果是一个TIME值,范围是从-838:59:59838: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');

  3. 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):提取日期时间中的要素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值