我找到了类似的东西:
SELECT * FROM POSTY WHERE MONTH(data_dodania) = 5 AND YEAR(data_dodania) = 2017
但它有点不是我想要的。也许它甚至不存在。 这就是为什么我有疑问,是否有可能做更聪明的检查数据?
与where date=201705
一样(第一年,第二个月)。
这个我不知道我尝试过的工作。但我输入此信息是为了表明我要求的东西。
Idk,where date='May2017
还是什么?
答案 0 :(得分:1)
您可以使用MySQL DATE_FORMAT以您想要的任何方式格式化日期。例如。以下查询格式为YYYYMM
格式的日期:
SELECT DATE_FORMAT(data_dodania, '%Y%m')
FROM POSTY;
现在,如果您有此格式的日期,则可以在DATE_FORMAT
条件中使用WHERE
来过滤行,例如:
SELECT *
FROM POSTY
WHERE DATE_FORMAT(data_dodania, '%Y%m') = '201705';
同样,要打印May2017的格式为%M%Y
(documtation有格式和示例列表)。
答案 1 :(得分:1)
使用日期进行查询的最佳方法是指定要查看的范围。这将能够利用data_dodania
字段上的索引。使用任何函数都会导致查询使用ROW SCAN来执行函数,然后比较值。我强烈建议使用范围:
SELECT * FROM POSTY WHERE data_dodania >= '2017-05-01' AND data_dodania <= '2017-05-31'
另一种方法是使用BETWEEN语法(这在语法上与上面相同):
SELECT * FROM POSTY WHERE data_dodania BETWEEN '2017-05-01' AND '2017-06-01'