Mysql 常见时间函数整理

这两天运营有需求,需要按照每周来统计表的数据。想想看如果自己统计每周数据,还要按周来查询,然后做union,有没有方便的函数呢?查了下,Mysql提供了week函数,可以方便的从日期中获取到周次,这样一来,便可以在分组时,按照week来分组,如group by week(create_time)。顺便整理了下,日常可能用到的一些时间函数,方便日后使用。

SELECT 
  -- 获取当前执行时间,包含日期
  NOW() 
    -- 获取当前执行日期
  , CURDATE()
  -- 获取当前执行时间,没有日期  
  , CURTIME()
  -- 获取当前执行日期2
  , DATE(NOW())
  -- 格式化成 2017-05-16 00:18:32 大Y,和大H,其他小写
  , DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s')
  -- 或者用 大T来表达24小时制
  , DATE_FORMAT(NOW(), '%Y-%m-%d %T')
  -- 周次,周日作为每周的第一周,等价DATE_FORMAT(NOW(), '%U') 或 EXTRACT(WEEK FROM NOW())
  , WEEK(NOW(),2)  
  -- 周次,周一作为每周的第一周,等价DATE_FORMAT(NOW(), '%u')
  , WEEK(NOW(),3)
  -- 抽取月次
  , EXTRACT(MONTH FROM NOW())
  -- 星期索引 0 周一 1 周二 ... 6 周天 
  , WEEKDAY(NOW())
  -- 获取系统时间,区别于前面的执行时间  
  , SYSDATE()
  , SLEEP(1)
  -- 再获取系统时间,会间隔1s
  , SYSDATE()
  -- 时间差,天数用day,后面减去前面 还可以是 FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR
  , TIMESTAMPDIFF(DAY,'2017-05-16 21:06:00','2017-05-16 21:06:50') TIMESTAMPDIFFResult
  -- 日期差,前面减后面
  , DATEDIFF('2008-12-30','2008-12-29')
  -- 增加天数
  , DATE_ADD(NOW(), INTERVAL 1 DAY)
  -- 减去天数
  , DATE_SUB(NOW(), INTERVAL 1 DAY)
  -- 获取是一年中的第几天,从1开始
  , DAYOFYEAR(NOW())
  -- 获取是一月中的第几天,从1开始
  , DAYOFMONTH(NOW())
  -- 获取是一周中的第几天,从周天开始
  , DAYOFWEEK(NOW())
  -- 获取每年第一天
  , DATE_SUB(CURDATE(), INTERVAL DAYOFYEAR(NOW())-1 DAY)
  -- 获取某日期后第几周
  , DATE_ADD('2017-01-01', INTERVAL 2 WEEK)
;

执行结果:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值