从数据库中按日期选择,但不包括日,月和年

时间:2017-06-25 08:42:18

标签: mysql sql database date

我找到了类似的东西:

SELECT * FROM POSTY WHERE MONTH(data_dodania) = 5 AND YEAR(data_dodania) = 2017

但它有点不是我想要的。也许它甚至不存在。 这就是为什么我有疑问,是否有可能做更聪明的检查数据?

where date=201705一样(第一年,第二个月)。

这个我不知道我尝试过的工作。但我输入此信息是为了表明我要求的东西。

Idk,where date='May2017还是什么?

2 个答案:

答案 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'