SQL语句如何精准查找某一时间段的数据

文章提供了多种在SQL查询中处理日期时间的示例,包括查询特定时间段、每天的某一时段、以及当天、最近一天、一周、一个月的数据。还涵盖了查询半小时内、当天、生日等特定条件的数据,并给出了不同日期范围的计算方法。
摘要由CSDN通过智能技术生成

在项目开发过程中,自己需要查询出一定时间段内的交易。故需要在sql查询语句中加入日期时间要素,sql语句如何实现?

SELECT * FROM lmapp.lm_bill where tx_time Between '2015-12-20' And '2015-12-31';

查询每一天某个时间段的所有记录(例:9:00:00到21:00:00)

SELECT * FROM 表名 
WHERE DATE_FORMAT(create_time,'%H:%i:%S')>='09:00:00'
and DATE_FORMAT(create_time,'%H:%i:%S')<='21:00:00' 
ORDER BY 排序字段 ASC;

mysql 查询当天、最近一天、最近一周,本月,上一个月的数据

今天
select * from 表名 where to_days(时间字段名) = to_days(now());

昨天

SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1
7天

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)

近30天

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= 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

参考:https://www.cnblogs.com/dengyungao/p/8324640.html
https://blog.csdn.net/qq_14861089/article/details/53182887
https://blog.csdn.net/cool_easy/article/details/50880949
https://www.cnblogs.com/kangjing/p/3718685.html

查询半小时内数据的方法

1、select * from 表名 where datediff(minute,createtime,getdate())<30

2、select * from 表名 where createtime>=DateAdd(minute,-30,GETDATE()) and createtime<getdate()
查询当天数据的方法

1、select * from 表名 where datediff(day,createtime,getdate())=0

2、select * from 表名 where convert(varchar(8),createtime,112)=convert(varchar(8),GETDATE(),112) 推荐此种,效率较高

3、select * from 表名 where CAST(CreateDate as date)=CAST(GETDATE() as date)

3、string.Format("select * from 表名 where CreateDate>='{1} 0:00:00' AND CreateDate<='{1} 23:59:59'",DateTime.Now.ToString("yyyy-MM-dd"))

查询当天生日的方法(每年当天都需要)

1、select * from 表名 where MONTH(Birthday)=MONTH(GETDATE()) and DAY(Birthday)=DAY(GETDATE())

一、SQL获取本日、本周、本月、本季度、本年数据

本日:SELECT * FROM TableName WHERE DATEDIFF(dd, 日期字段, GETDATE()) = 0;
本月:SELECT * FROM TableName WHERE DATEDIFF(mm, 日期字段, GETDATE()) = 0; 
本周:SELECT * FROM TableName WHERE DATEDIFF(week, 日期字段, GETDATE()) = 0;
本季:SELECT * FROM TableName WHERE DATEDIFF(qq, 日期字段, GETDATE()) = 0;
本年:SELECT * FROM TableName WHERE DATEDIFF(yy, 日期字段, GETDATE()) = 0;

二、只获取日期

SELECT CONVERT(VARCHAR(10), GETDATE(), 120);       --当前日期 2020-03-23
SELECT CONVERT(VARCHAR(10), GETDATE(), 121);       --当前日期 2020-03-23
SELECT CONVERT(VARCHAR(10), GETDATE() - 1, 120);  --前一日 2020-03-22
SELECT CONVERT(VARCHAR(10), GETDATE() + 1, 120);  --后一日 2020-03-24

三、关于日期在表中查询

昨天:SELECT * FROM TableName WHERE DATEDIFF(dd, DateTimCol, GETDATE()) = 1;
明天:SELECT * FROM TableName WHERE DATEDIFF(dd, GETDATE(), DateTimCol) = 1;
最近7天:SELECT * FROM TableName WHERE DATEDIFF(dd, 时间字段, GETDATE()) <= 7;

上周:SELECT * FROM TableName WHERE DATEDIFF(week , 时间字段,GETDATE()) = 1
本周:SELECT * FROM TableName WHERE DATEDIFF(week , 时间字段,GETDATE()) = 0
下周:SELECT * FROM TableName WHERE DATEDIFF(week , 时间字段,GETDATE()) = -1

上月:SELECT * FROM TableName WHERE MONTH(日期字段) = MONTH(GETDATE()) - 1;
本月:SELECT * FROM TableName  WHERE MONTH(日期字段) = MONTH(GETDATE());
下月:SELECT * FROM TableName WHERE MONTH(日期字段) = MONTH(GETDATE()) + 1;
————————————————
版权声明:本文为CSDN博主「Tigers996」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/d1332508051/article/details/123681468

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值