Php 我如何搜索一个月内的任何一天?

Php 我如何搜索一个月内的任何一天?,php,mysql,date,Php,Mysql,Date,我正在数据库中搜索某个月内写的文章: between '1 '.$month.' '.$year and '31 '.$month.' '.$year 即使某些月份(如二月)只有28天,这种方法行吗?换句话说,我是否必须动态查找月份的天数?不,您不需要知道月份的长度。只要这样做: WHERE MONTH(yourcolumnname) = $month AND YEAR(yourcolumnname) = $year 你能在两者之间搜索吗 between '1 '.$month.' '.$y

我正在数据库中搜索某个月内写的文章:

between '1 '.$month.' '.$year and '31 '.$month.' '.$year

即使某些月份(如二月)只有28天,这种方法行吗?换句话说,我是否必须动态查找月份的天数?

不,您不需要知道月份的长度。只要这样做:

WHERE MONTH(yourcolumnname) = $month AND YEAR(yourcolumnname) = $year

你能在两者之间搜索吗

between '1 '.$month.' '.$year and '1 '.$month_plus1.' '.$year
?


您是否尝试过针对要匹配的数据运行sql语句,这可能是一个很好的开始方法。

您的代码看起来不错。从某种意义上说,它可以工作,但更优雅的方法是

SELECT * FROM tablename WHERE MONTH(columname) = '1'
                              AND YEAR(columnname) = '2009'

如果是
DATETIME
DATE
字段,也可以执行
SELECT*FROM table WHERE DATE_列,如“2010-02-%”
使用索引,这可能比
MONTH()
YEAR()
技术要快,后者必须对每一行进行计算。

数据库中列的名称和类型是什么?DATE、DATETIME或TIMESTAMP—换句话说,MySQL知道是日期的列类型之一。我不相信你能在VARCHAR列或任何东西上做这件事。@ceejayoz:在MySQL中,它也能在VARCHAR上工作。如果字符串不是有效日期,它只返回NULL。@Mark Byers谢谢,很高兴知道。假设其中一种日期类型的速度更快,因为它不需要猜测/解释。因此,如果我的列是时间戳列,我会用时间戳替换日期时间吗?iMaster:“datetime”是列名称的占位符,而不是类型。这包括下个月的第一天,我想这是次优的。如果你包括时间,使用这种方法也是可行的!。。。我习惯于加一个月,减去一秒或一毫秒