跳至主要內容

MySQL数据类型-日期

知识库数据库MySQLMySQL大约 2 分钟

数据库教程: https://www.sjkjc.com/mysql/select/open in new window

时间类型

类型字节格式用途是否支持设置系统默认值
date3YYYY-MM-DD日期值不支持
time3HH:MM:SS时间值或持续时间不支持
year1YYYY年份不支持
datetime8YYYY-MM-DD HH:MM:SS日期和时间混合值不支持
timestamp4YYYYMMDD HHMMSS混合日期和时间,可作时间戳支持
-- 方式一:
create_time timestamp NOT NULL DEFAULT NOW();
-- 方式二:
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP();
-- 方式三:
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

MySQL DATE 函数

MySQL 提供了许多有用的日期函数,允许您有效地操作日期。以下列出了常用的日期函数:

  • NOW(): 获取当前日期和时间

    SELECT NOW();
    
  • CURDATE(): 获取当前日期

    SELECT CURDATE();
    
  • DATE(): 获取日期部分

    SELECT DATE(NOW());
    
  • DATE_FORMAT(): 格式化输出日期

    SELECT DATE_FORMAT(CURDATE(), '%m/%d/%Y') today;
    
  • DATEDIFF(): 计算两个日期之间的天数

    SELECT DATEDIFF('2021-01-01','2022-01-01') days;
    
  • DATE_ADD(): 在给定日期上增加给定的时间间隔

    SELECT CURDATE() `今天`,
      DATE_ADD(CURDATE(), INTERVAL 1 DAY) '一天后',
      DATE_ADD(CURDATE(), INTERVAL 1 WEEK) '一周后',
      DATE_ADD(CURDATE(), INTERVAL 1 MONTH) '一月后',
      DATE_ADD(CURDATE(), INTERVAL 1 YEAR) '一年后';
    
  • DATE_SUB(): 在给定日期上减少给定的时间间隔

    SELECT CURDATE() `今天`,
      DATE_SUB(CURDATE(), INTERVAL 1 DAY) '一天前',
      DATE_SUB(CURDATE(), INTERVAL 1 WEEK) '一周前',
      DATE_SUB(CURDATE(), INTERVAL 1 MONTH) '一月前',
      DATE_SUB(CURDATE(), INTERVAL 1 YEAR) '一年前';
    
  • DAY(): 返回日期中天

  • MONTH(): 返回月份

  • QUARTER(): 返回季节

  • YEAR(): 返回年份

    SELECT DAY(CURDATE()) `day`,
      MONTH(CURDATE()) `month`,
      QUARTER(CURDATE()) `quarter`,
      YEAR(CURDATE()) `year`;
    
  • WEEK(): 函数返回给定日期是一年周的第几周

  • WEEKDAY(): 函数返回工作日索引

  • WEEKOFYEAR(): 函数返回日历周

    SELECT WEEKDAY(CURDATE()) `weekday`,
      WEEK(CURDATE()) `week`,
      WEEKOFYEAR(CURDATE()) `weekofyear`;