MySQL常用时间函数以及查询今天、昨天、上周、近30天、去年等的数据的方法

常用时间函数

1、date(日期类型数据)

返回日期或日期/时间表达式的日期部分

2、now()

无参数,返回当前的日期和时间

3、curdate()

无参数,返回当前的日期

4、to_days(日期类型数据)

给定一个日期date, 返回一个天数 (从年份0000-00-00开始的天数 )

5、date_sub(date,interval expr type)

从日期减去指定的时间间隔

date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

type 参数()常用:day、week、month、quarter|、year

6、date_format(日期类型数据,'日期格式')

用于以不同的格式显示日期/时间数据

常用日期格式:%Y % M %D % H %I %S

7、period_diff(p1,p2)

返回周期P1和P2之间的月数, P1和P2格式为YYMM或YYYYMM,注意周期参数 P1 和 P2 都不是日期值

8、quarter(d)

返回日期d是一年中的第几季度,值的范围是1~4

9、year week(date[,mode])

获取年份和周数的一个函数,常用mode为0和1,0表示星期天为第一天,1表示星期一为第一天(其中mode可省略,默认为0)

表:order_1 (id,order_time,amount),下面根据 order_time 字段来查询各个时间段内的所有记录

1、查询当天的数据
select * from order_1 where 
to_days(order_time)=to_days(now());

2、查询昨天的数据
select * from order_1 where 
to_days(now())-to_days(order_time) =1;

3、查询最近7天的数据(包括今天一共7天)
select * from order_1 where 
date_sub(curdate(),interval 7 day) < date(order_time);

4、查询最近30天的数据(包括今天一共30天)
select * from order_1 where 
date_sub(curdate(),interval 30 day) < date(order_time);

5、查询当月(本月)的数据
select * from order_1 where 
date_format(curdate(),'%y%m') = date_format(order_time,'%y%m');


6、查询上个月的数据
select * from order_1 where
period_diff(date_format(now(),'%Y%m'),date_format(order_time,'%Y%m'))=1;

7、查询本季度的数据
select * from order_1 where
quarter(order_time) = quarter(now());

8、查询上季度的数据
select * from order_1 where
quarter(order_time) =quarter(date_sub(curdate(),interval 1 quarter));

9、查询当年(今年)的数据
select * from order_1 where
year(order_time) = year(now());

10、查询去年的数据
select * from order_1 where
year(order_time) = year(date_sub(now(),interval 1 year));

11、查询当前这周的数据 
select * from order_1 where
yearweek(date_format(order_time, '%Y-%m-%d'),1) = yearweek(now(),1);
 
12、查询上周的数据
select * from order_1 where
yearweek(date_format(order_time, '%Y-%m-%d'),1) = yearweek(now(),1)-1;
 
13、查询距离当前现在6个月的数据
select * from order_1 where 
order_time between date_sub(now(),interval 6 month) and now();

SQL Server查近三个月数据

select operDate from RechargeRecord where datediff(month,'数据库时间字段',getdate())=3

SELECT
s.price,i.billdate,i.invoiceid
FROM saledetail s
JOIN invoice i
ON s.invoiceid = i.invoiceid
WHERE s.goodsid = 49219
AND datediff(day,i.billdate,getdate())<90 and datediff(day,i.billdate,getdate())>=0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值