SQL常用日期函数

1、基本函数

SELECT CURDATE(),  --当前日期
       CURTIME(),  --当前时间
       
       NOW(),      --当前日期+时间
       SYSDATE()

2、获取 日期、时间的特定部分

 SELECT YEAR(NOW()),          -- 年 
        MONTHNAME(NOW()),     -- 月的名称
        WEEK(NOW()),          -- 一年中的第几周
        DAYNAME(NOW()),       -- 这一天是这一周的周几
        HOUR(NOW()),          -- 小时
        MINUTE(NOW()),        -- 分钟
       
        EXTRACT(YEAR FROM NOW()),
        EXTRACT(QUARTER FROM NOW()),                
        EXTRACT(MONTH FROM NOW()),      
        EXTRACT(DAY FROM NOW()),      
        EXTRACT(YEAR FROM NOW()),      
        EXTRACT(HOUR FROM NOW()),      
        EXTRACT(MINUTE FROM NOW()),      
        EXTRACT(SECOND FROM NOW()),
       
        EXTRACT(YEAR_MONTH FROM NOW()),   -- 格式:YYYYMM 201606
        EXTRACT(DAY_HOUR FROM NOW()),     -- 格式:DDHH 2418        
        EXTRACT(DAY_MINUTE FROM NOW()),   -- 格式:DDMM 2405          
        EXTRACT(DAY_SECOND FROM NOW()), 
        EXTRACT(HOUR_MINUTE FROM NOW()),        
        EXTRACT(HOUR_SECOND FROM NOW()),        
        EXTRACT(MINUTE_SECOND FROM NOW()) 

3、获取日期的特殊函数

SELECT  DAYOFYEAR(NOW()),    -- 一年中的第几天
        DAYOFMONTH(NOW()),   -- 一个月中的第几天
        DAYOFWEEK(NOW()),    -- 一周中的第几天,周日作为第1天
       
        WEEKOFYEAR(NOW()),   -- 一年中的第几周
        WEEKDAY(NOW()),      -- 周几,周一作为第0天
        YEARWEEK(NOW()),     -- 一年中的第几周,格式为:201625 
        
        LAST_DAY(NOW())      -- 当前日期所在月份的最后一天

4、日期、时间运算

SELECT DATE_ADD(NOW(),INTERVAL 10 YEAR),   -- 增加日期
       DATE_ADD(NOW(),INTERVAL 10 MONTH),   
       DATE_ADD(NOW(),INTERVAL 10 DAY),   
       DATE_ADD(NOW(),INTERVAL 10 HOUR),   
       DATE_ADD(NOW(),INTERVAL 10 MINUTE),   
       DATE_ADD(NOW(),INTERVAL 10 SECOND),         

       DATE_SUB(NOW(),INTERVAL 10 DAY),    -- 减少日期
       DATE_SUB(NOW(),INTERVAL -10 DAY),
       DATE_SUB(NOW(),INTERVAL -10 HOUR),
              
       DATEDIFF(DATE_ADD(NOW(),INTERVAL 8 HOUR),NOW()),  -- expr1 减去 expr2 得到的天数
       DATEDIFF(DATE_ADD(NOW(),INTERVAL 9 HOUR),NOW()),  -- 在相减时,只是做日期部分的计算,不考虑时 
       DATEDIFF(NOW(),'2016-06-05'), 
       
       PERIOD_ADD(201605,8),             -- 给YYMM、YYYYMM 加上N个月
       PERIOD_DIFF(201605,201701),       -- expr2 减去 expr1 得到的月数

       TIMEDIFF('05:00:00','00:00:00')   -- expr1 减去 expr2 得到的 时间型数据,不支持这种格式 INTERVAL 10 MINUTE

5、日期、时间运算的增强版本

SELECT TIMESTAMP(NOW()),                 -- 把日期时间 转化为 时间戳类型
       TIMESTAMP(NOW(),'01 01:01:01'),   -- 转换类型的同时,会加上 expr2
       
       TIMESTAMPADD(DAY,5,NOW()),        -- 增加日期 5天
       
       TIMESTAMPDIFF(DAY,NOW(),NOW()+INTERVAL 1 DAY), -- 日期减法,可以指定 具体的单位
       TIMESTAMPDIFF(SECOND,NOW(),NOW())

6、日期、时间的转化和构造

SELECT TIME_TO_SEC(CURTIME()),              -- 时间转化为秒数:67622
       SEC_TO_TIME(TIME_TO_SEC(CURTIME())), -- 秒数转化为时间:18:47:02
        
       TO_DAYS(NOW()),                      -- 日期转化为天数:736504
       FROM_DAYS(TO_DAYS(NOW())),           -- 天数转化为日期:2016-06-24
       
       MAKEDATE(2015,32),                   -- 构造日期:expr1为年,expr2为天,这里是:2015-02-01
       MAKETIME(10,11,11)                   -- 构造时间:时 分 秒

7、 日期、时间的格式化以及获取格式

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),   -- 把日期时间 按照一定的格式,转化为字符串格式
       TIME_FORMAT(NOW(),'%H:%i:%s'),
       
       GET_FORMAT(DATE,'usa'),    -- 获取格式,expr1:DATE,TIME,DATETIME, expr2:usa,interval,iso
       GET_FORMAT(TIME,'usa'),
       GET_FORMAT(DATETIME,'usa')

8、 unix时间戳、utc时间

 SELECT UTC_DATE(),
        UTC_TIME(),       
        UTC_TIMESTAMP(),
           
        UNIX_TIMESTAMP(NOW()),
        FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())),
        FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()),'%Y-%m-%d %H:%i:%s')

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值