MySql 操作时间

MySql 操作时间查询:日、周、月、季度、年

这篇博客的记录,主要是在这次的项目中运用到了很多时间函数,才发现自己对mysql的时间函数记忆不够,在统计中,很多地方都是用到时间进行统计,而灵活运用sql函数,可以事半功倍。

演示

找出当前今天的数据:

SELECT * FROM table WHERE DATE(时间字段) = CURDATE();

DATE(),这个函数用于将时间格式(年月日 时分秒)转换成年月日,CURDATE()函数是获取当前的年月日,NOW()是获取当前年月日 时分秒

找出前一天的数据:

SELECT * FROM table WHERE DATE_SUB(时间字段, INTERVAL 1 DAY) 
SELECT * FROM table WHERE DATE(时间字段) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)

DATE_SUB()函数得到指定日期前一天的日期/把1改为任意数字就可以得到前N天的日期,还有一个和它相反的函数
DATE_ADD()函数得到指定日期后一天的日期/把1改为任意数字就可以得到后N天的日期
其他用法

SELECT * DATE_SUB('2019-05-10', INTERVAL 1 DAY) 表示 2019-05-09
SELECT * DATE_SUB('2019-05-10', INTERVAL 0 DAY) 表示 2019-05-10
SELECT * DATE_SUB('2019-05-10', INTERVAL -1 DAY) 表示 2019-05-11
SELECT * DATE_SUB(CURDATE(), INTERVAL 1 MONTH) 表示 2019-04-10
SELECT * DATE_SUB(CURDATE(), INTERVAL -1 MONTH) 表示 2019-06-10
SELECT * DATE_SUB(CURDATE(), INTERVAL 1 YEAR) 表示 2018-05-10
SELECT * DATE_SUB(CURDATE(), INTERVAL -1 YEAR) 表示 2019-05-10

两个时间中间差多少天:

SELECT DATEDIFF('2019-05-10', '2019-05-09'); 得到的结果为:1 

DATEDIFF()函数用于时间相减

获取上个月的最后一天:

SELECT DATE_SUB(LAST_DAY(CURDATE()), INTERVAL 1 MONTH)

LAST_DAY()函数用于获取某个时间里,这个月的最后一天,以上SQL的时候是,取到当前月的最后一天,在通过DATE_SUB()函数中的INTERVAL 1 MONTH减去一个月,得到上个月的最后一天

统计七天的数据:

SELECT * FROM table WHERE DATE(时间字段) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND DATE(时间字段) <= DATE_SUB(CURDATE(), INTERVAL 1 DAY)

查询某个时间段内的数据:

SELECT * FROM table WHERE DATE_FORMAT(时间字段, '%y-%m-%d') >= '某时间' AND DATE_FORMAT(时间字段, '%y-%m-%d') <= '某时间'

获取周:

SELECT WEEK(CURDATE(), 1)  表示当前时间是今年第几周

获取上一周:

SELECT WEEK(DATE_SUB(CURDATE(), INTERVAL 7 DAY),1)

三十天的数据:

select * from 表名 where date_sub(curdate(), interval 30 day) <= date(时间字段名);
select * from table where date_sub(curdate(), interval 1 month) <= date(时间字段名);

本月:

select * from 表名 where date_format( 时间字段名, '%Y%m' ) = date_format(curdate( ) , '%Y%m' )

查询一个月

select * from 表名 where period_diff( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值