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

时间:2017-12-26 09:54:05

标签: php mysql database datetime

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

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

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'

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

7 个答案:

答案 0 :(得分:4)

用此

替换您的group by date_format( date_column, '%Y-%m' ) 语句
where

即。

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

你最终可以这样做。

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

WHERE CONCAT(YEAR(date),'-',MONTH(date)) = '2017-12' 将生成完整日期格式,该格式不等同于' 2017-12'。试试这个:

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

或者这个:

%

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

示例

date_format

如果您想按年份和月份汇总数据,请在格式上使用where date_format( date_column, '%Y-%m' ) = '2017-12'

示例

group by

答案 5 :(得分:1)

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

答案 6 :(得分:1)

这将是你的

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