我正在编写一个电子商务应用程序并编写一个脚本来跟踪按年/月的项目销售情况。
我在这里使用此查询来从表中获取不同的年月日期。
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'
这样做的正确方法是什么?
要查找某个月的记录,请将where子句更新为:
where CONCAT(YEAR(date),'-',MONTH(date)) = '2017-12'
用这个替换你的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'
DATE(date)
将生成完整的日期格式,不等于'2017-12'。试试这个:
WHERE CONCAT(YEAR(date),'-',MONTH(date)) = '2017-12'
或这个:
WHERE YEAR(date) = 2017 AND MONTH(date) = 12
当然,您的查询返回0行。问题伴随着你的病情。它应该是:
SELECT * FROM product_purchases WHERE YEAR(date) = '2017' AND MONTH(date) = '12'
如果您希望数据仅按年和月过滤,请在日期列上使用date_format
以匹配所需的年份和月份。
例:
where date_format( date_column, '%Y-%m' ) = '2017-12'
如果要按年和月汇总数据,请在格式上使用group by
。
例:
group by date_format( date_column, '%Y-%m' )
SELECT * FROM oc_customer WHERE MONTH(date_added
)= 1年和年(date_added
)= 2016
这会对你有所帮助
WHERE YEAR(date) = 2017 AND MONTH(date) = 12