我正在搜索数据库以查找在某个月内撰写的文章:
between '1 '.$month.' '.$year and '31 '.$month.' '.$year
即使某些月份(如2月份)只有28天,这种方法还可以吗?换句话说,我是否必须动态查找该月份的天数?
答案 0 :(得分:7)
不,您不需要知道月份的长度。就这样做:
WHERE MONTH(yourcolumnname) = $month AND YEAR(yourcolumnname) = $year
答案 1 :(得分:1)
你的代码看起来像o.k.从某种意义上说它会起作用,但更优雅的方法是
SELECT * FROM tablename WHERE MONTH(columname) = '1'
AND YEAR(columnname) = '2009'
答案 2 :(得分:1)
如果是DATETIME
或DATE
字段,您也可以SELECT * FROM table WHERE date_column LIKE '2010-02-%';
使用索引编制,这可能比MONTH()
和YEAR()
技术更快,必须在每一行上运行计算。
答案 3 :(得分:0)
你能在
之间搜索吗?between '1 '.$month.' '.$year and '1 '.$month_plus1.' '.$year
?
您是否尝试针对您要匹配的数据运行sql语句,这可能是一个很好的方法。