SQL Query根据年份和月份选择数据

问题描述 投票:4回答:7

我正在编写一个电子商务应用程序并编写一个脚本来跟踪按年/月的项目销售情况。

我在这里使用此查询来从表中获取不同的年月日期。

SELECT DISTINCT CONCAT(YEAR(date),'-',MONTH(date)) FROM product_purchases WHERE product_id = 1

这会给我一个像这样的输出

2017-11
2017-12

我接下来想要完成的是选择与该年和月相匹配的数据,例如2017-11。

我试过这个返回0行的查询

SELECT * FROM product_purchases WHERE DATE(date) = '2017-12'

这样做的正确方法是什么?

php mysql database datetime
7个回答
3
投票

要查找某个月的记录,请将where子句更新为:

where CONCAT(YEAR(date),'-',MONTH(date)) = '2017-12'


4
投票

用这个替换你的where声明

CONCAT(YEAR(date),'-',MONTH(date)) = '2017-12'.

SELECT * FROM product_purchases WHERE CONCAT(YEAR(date),'-',MONTH(date)) = '2017-12'

你最终可以做到这一点。

Select * from (SELECT DISTINCT CONCAT(YEAR(date),'-',MONTH(date)) as NewDate,Product_Id,
Product_Name FROM product_purchases WHERE product_id = 1) where NewDate='2017-12'

2
投票

DATE(date)将生成完整的日期格式,不等于'2017-12'。试试这个:

WHERE CONCAT(YEAR(date),'-',MONTH(date))  = '2017-12'

或这个:

WHERE YEAR(date) = 2017 AND MONTH(date) = 12

1
投票

当然,您的查询返回0行。问题伴随着你的病情。它应该是:

SELECT * FROM product_purchases WHERE YEAR(date) = '2017' AND MONTH(date) = '12'

1
投票

如果您希望数据仅按年和月过滤,请在日期列上使用date_format以匹配所需的年份和月份。

例:

where date_format( date_column, '%Y-%m' ) = '2017-12'

如果要按年和月汇总数据,请在格式上使用group by

例:

group by date_format( date_column, '%Y-%m' )

1
投票

SELECT * FROM oc_customer WHERE MONTH(date_added)= 1年和年(date_added)= 2016


1
投票

这会对你有所帮助

WHERE YEAR(date) = 2017 AND MONTH(date) = 12
© www.soinside.com 2019 - 2024. All rights reserved.