某段时间内的sql语句查询

在做某一个项目的时候,由于需要进行起始时间和结束时间这个时间段进行查询,当时也是查阅了很久,特记录笔记,方便日后查询

单表:

1.SELECT name,create_time FROM user_info WHERE create_time BETWEEN DATE('2019-12-12') AND DATE('2020-02-02');

2.SELECT name,create_time FROM user_info WHERE create_time >= DATE('2019-12-12') AND create_time <= DATE('2020-02-02');

多表联查:

SELECT 
			SUM(sell.`money`) AS sellMoney, DATE_FORMAT(sell.`create_time`,'%Y-%m-%d') AS sellStatsDate,
			SUM(sell_reback.`money`) AS sellRebackMoney, DATE_FORMAT(sell_reback.`create_time`,'%Y-%m-%d') AS sellRebackStatsDate
FROM 
			sell 
LEFT JOIN sell_reback 
ON 
			DATE_FORMAT(sell.`create_time`,'%Y-%m-%d')=DATE_FORMAT(sell_reback.`create_time`,'%Y-%m-%d')
WHERE
				and sell.`create_time` BETWEEN DATE(#{startTime}) AND DATE(#{endTime}) 
GROUP BY 
			DATE_FORMAT(sell.`create_time`,'%Y-%m-%d')

以上需要注意的地方:

DATE_FORMAT(具体时间字段,时间样式)

  • 时间字段要具体到是哪个表时间字段
  • %Y-%m-%d:查询的时间是有年月日的
  • %Y-%m:查询的时间是有年月的
  • %Y:查询的时间是有年的

至于#{startTime}、#{endTime}中的startTime和endTime类型

  • 字符串类型

如果想查询的是以,或者以年月、再或者是以年月日的形式

SQL语句的写法:

SELECT 
			SUM(sell.`money`) AS sellMoney, DATE_FORMAT(sell.`create_time`,'${value}') AS sellStatsDate,
			SUM(sell_reback.`money`) AS sellRebackMoney, DATE_FORMAT(sell_reback.`create_time`,'${value}') AS sellRebackStatsDate
FROM 
			sell LEFT JOIN sell_reback ON DATE_FORMAT(sell.`create_time`,'${value}')=DATE_FORMAT(sell_reback.`create_time`,'${value}')
GROUP BY 
			DATE_FORMAT(sell.`create_time`,'${value}') 

value值的类型是字符串,注意此刻使用的是'${value}',如果使用的是#,则将单引号去掉

如果想查询的一段时间为年与年之间、或者年月与年月之间、在或者年月日与年月日之间

  • 比如2017-2020之间
  • 比如2019-03 —— 2019-09 之间
  • 比如2020-01-10 —— 2020-04-20 之间
SELECT 
	SUM(sell.`money`) AS sellMoney, 
	DATE_FORMAT(sell.`create_time`,#{value}) AS sellStatsDate
FROM 
	sell
WHERE 
	sell.`create_time` BETWEEN DATE(#{startTime}) AND DATE(#{endTime}) 

GROUP BY 
	DATE_FORMAT(sell.`create_time`,#{value})
	

注意事项:

  • startTimeendTime的数值必须年-月-日的形式。比如要查询要查询2020-01-10 —— 2020-04-20 之间,那么startTime=“2020-01-10”,endTime=“2020-04-20”,即使要查询的是2019——2020之间的,也要以年-月-日的形式,由于主要寻找的是年份,所以月日就可以随意了
  • 由于查询结果的返回值才是我们想要的,以年查询肯定结果只想要关于年的,不带日月的,所以这时候就需要value值,对于value值的定义上述已说明,所以只需要根据需求传入对应的值即可

猜你喜欢

转载自blog.csdn.net/qq_40268756/article/details/105439902