【发布时间】:2010-02-15 21:27:30
【问题描述】:
我正在数据库中搜索某月内写的文章:
between '1 '.$month.' '.$year and '31 '.$month.' '.$year
即使某些月份(如二月)只有 28 天,这种方法是否可行?换句话说,我是否必须动态查找一个月中的天数?
【问题讨论】:
-
你的列在数据库中的名称和类型是什么?
我正在数据库中搜索某月内写的文章:
between '1 '.$month.' '.$year and '31 '.$month.' '.$year
即使某些月份(如二月)只有 28 天,这种方法是否可行?换句话说,我是否必须动态查找一个月中的天数?
【问题讨论】:
不,您不需要知道月份的长度。只需这样做:
WHERE MONTH(yourcolumnname) = $month AND YEAR(yourcolumnname) = $year
【讨论】:
您的代码看起来没问题。从某种意义上说它会起作用,但更优雅的方法是
SELECT * FROM tablename WHERE MONTH(columname) = '1'
AND YEAR(columnname) = '2009'
【讨论】:
如果是DATETIME 或DATE 字段,您也可以使用SELECT * FROM table WHERE date_column LIKE '2010-02-%'; 进行索引,这可能比MONTH() 和YEAR() 技术更快,后者必须对每个字段进行计算行。
【讨论】:
你能在之间搜索吗
between '1 '.$month.' '.$year and '1 '.$month_plus1.' '.$year
?
您是否尝试过针对您要匹配的数据运行 sql 语句,这可能是一个很好的开始方法。
【讨论】: