我有一个PHP scirpt,总是查询数据库表中的所有数据,而且它变得非常慢。我真的只需要特定月份和年份的数据。
是否有一种简单的方法可以获得这些条目?例如,2013年2月的所有内容?
如果适用于解决方案,那么在我的表中存储日期的列的类型为datetime
。
答案 0 :(得分:2)
您可以在select语句的WHERE子句中添加该条件。我建议在两个日期使用BETWEEN操作数:
SELECT myColumns
FROM myTable
WHERE dateColumn BETWEEN '2013-02-01' AND '2013-02-28';
如果您的意思是说您想要从2013年2月开始的所有内容,您可以使用大于或等于运算符来执行此操作:
SELECT myColumns
FROM myTable
WHERE dateColumn >= '2013-02-01';
修改强>
虽然以上是我首选的方法,但我想补充一点,MySQL还提供了抓取日期特定部分的功能。如果您想创建一个参数化查询,您可以将月份和年份作为整数传递(而不是开始日期和结束日期),您可以像这样调整查询:
SELECT myColumns
FROM myTable
WHERE MONTH(dateColumn) = 2 AND YEAR(dateColumn) = 2013;
以下是一大堆有用的date and time functions。
答案 1 :(得分:0)
您应该将datetime字段编入索引以提高效率,然后在sql中使用Between语法。这将允许mysql引擎从返回的数据集中删除您不感兴趣的所有记录。