在项目开发过程中,自己需要查询出一定时间段内的交易。故需要在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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐