MySQL 时间函数

下文中使用到的数据库,可参考 创建练习数据库

返回当前日期

  1. 函数:CURDATE()

  2. 指令

    1
    SELECT CURDATE();
  3. 运行结果

返回当前时间

  1. 函数:CURTIME()

  2. 指令

    1
    SELECT CURTIME();
  3. 运行结果

返回当前日期和时间

  1. 函数:NOW()

  2. 指令

    1
    SELECT NOW()
  3. 运行结果

提取日期值

  1. 函数:DATE()

  2. 指令

    1
    SELECT DATE('2021-10-31 11:36:20')
  3. 运行结果

提取年份值

  1. 函数:YEAR()

  2. 指令

    1
    SELECT YEAR('2021-10-31 11:36:20')
  3. 运行结果

提取月份值

  1. 函数:MONTH()

  2. 指令

    1
    SELECT MONTH('2021-10-31 11:36:20')
  3. 运行结果

提取天数值

  1. 函数:DAY()

  2. 指令

    1
    SELECT DAY('2021-10-31 11:36:20')
  3. 运行结果

提取小时值

  1. 函数:HOUR()

  2. 指令

    1
    SELECT HOUR('2021-10-31 11:36:20')
  3. 运行结果

提取分钟值

  1. 函数:MINUTE()

  2. 指令

    1
    SELECT MINUTE('2021-10-31 11:36:20')
  3. 运行结果

提取秒数值

  1. 函数:SECOND()

  2. 指令

    1
    SELECT SECOND('2021-10-31 11:36:20')
  3. 运行结果

将秒数转为时间

  1. 函数:SEC_TO_TIME

  2. 指令

    1
    SELECT SEC_TO_TIME(3661)
  3. 运行结果

将时间转为秒数

  1. 函数:TIME_TO_SEC()

  2. 指令

    1
    SELECT TIME_TO_SEC('1:01:01')
  3. 运行结果

计算 n 天后的日期

  1. 函数:ADDDATE(d,n)

  2. 说明:d 表示日期,n 表示天数。

  3. 指令

    1
    SELECT ADDDATE('2021-10-31',10)
  4. 运行结果

计算 n 天前的日期

  1. 函数:SUBDATE(d,n)

  2. 说明:d 表示日期,n 表示天数。

  3. 指令

    1
    SELECT SUBDATE('2021-10-31 12:23:20',10)
  4. 运行结果

计算 n 秒后的时间

  1. 函数:ADDTIME(t,n)

  2. 说明:t 表示时间,n 表示时间间隔,当 n 为整数时要小于 60,也可以用字符串表示。

  3. 指令

    1
    SELECT ADDTIME('2021-10-31 11:43:25',5),ADDTIME('2021-10-31 11:43:25','2:10:15')
  4. 运行结果

计算 n 秒前的时间

  1. 函数:SUBTIME()

  2. 说明:t 表示时间,n 表示时间间隔,当 n 为整数时要小于 60,也可以用字符串表示。

  3. 指令

    1
    SELECT SUBTIME('2021-10-31 12:23:20',10),SUBTIME('2021-10-31 12:23:20','2:3:20')
  4. 运行结果

计算日期间隔

  1. 函数:DATEDIFF(d1,d2)

  2. 说明:d1 表示结束日期,d2 表示开始日期。

  3. 指令

    1
    SELECT DATEDIFF('2022-01-01','2021-10-31'),DATEDIFF('2021-10-31','2022-01-01')
  4. 运行结果

计算时间间隔

  1. 函数:TIMEDIFF(t1,t2)

  2. 说明:t1 是开始时间 t2 结束时间

  3. 指令

    1
    SELECT TIMEDIFF('12:31:20','11:30:10')
  4. 运行结果

练习:计算 xs 表中所用人的年龄

  1. 指令

    1
    select 学号,姓名,出生日期,DATEDIFF(NOW(),出生日期) DIV 365 as 年龄 from xs;
  2. 运行结果