仅根据月份和年份选择 mySQL

2022-08-30 07:17:30

我的mySQL数据库中有一列有一些行。其中一行是 DATE,如下所示:2012-02-01

我想实现的是仅使用基于年份和月份的PHP进行SELECT。

SELECT 的逻辑如下:

$q="SELECT * FROM projects WHERE Date="SELECT HERE THE SPECIFIC YEAR AND MONTH"";

特定的月份和年份将从变量传递,如下所示$_POST$_POST['period']="2012-02";

我该怎么做?


答案 1
SELECT * FROM projects WHERE YEAR(Date) = 2011 AND MONTH(Date) = 5

答案 2

如果您有

$_POST['period'] = "2012-02";

首先,查找该月的第一天:

$first_day = $_POST['period'] . "-01"

然后,此查询将使用索引(如果有):Date

$q = "
    SELECT *  
    FROM projects 
    WHERE Date BETWEEN '$first_day' 
                   AND LAST_DAY( '$first_day' )
     " ;

也可以使用非独占间隔,这效果很好(您不必担心列是 、或 ,也不必担心精度:DATEDATETIMETIMESTAMP

$q = "
    SELECT *  
    FROM projects 
    WHERE Date >= '$first_day' 
      AND Date  < '$first_day' + INTERVAL 1 MONTH 
     " ;

安全警告:

应正确转义这些值或使用预准备语句。简而言之,在PHP中使用现在推荐的任何方法,以避免任何SQL注入问题。


推荐