Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从MySql抓取当前日期介于开始日期和结束日期之间的行(检查当前日期是否介于开始日期和结束日期之间)_Php_Mysql_Date_Calendar - Fatal编程技术网

Php 从MySql抓取当前日期介于开始日期和结束日期之间的行(检查当前日期是否介于开始日期和结束日期之间)

Php 从MySql抓取当前日期介于开始日期和结束日期之间的行(检查当前日期是否介于开始日期和结束日期之间),php,mysql,date,calendar,Php,Mysql,Date,Calendar,我正试图从数据库中进行选择,以获得该月的“活动”。到目前为止,我已经成功地抓取了在本月内开始或结束的行。我现在需要做的是选择从一个月开始到几个月结束的行(例如:这是一年中的第三个月,有一个从第一个月到第五个月的“活动”。另一个例子是从2012年到2013年的“活动”) 我希望有某种方法可以通过MySql选择capaign可以运行的所有行。如果不是,我应该获取数据库中的所有数据,只显示当月运行的数据 我已经做了一个函数,在数组中显示每个日期之间的所有日期,称为“dateRange”。我还创建了另一

我正试图从数据库中进行选择,以获得该月的“活动”。到目前为止,我已经成功地抓取了在本月内开始或结束的行。我现在需要做的是选择从一个月开始到几个月结束的行(例如:这是一年中的第三个月,有一个从第一个月到第五个月的“活动”。另一个例子是从2012年到2013年的“活动”)

我希望有某种方法可以通过MySql选择capaign可以运行的所有行。如果不是,我应该获取数据库中的所有数据,只显示当月运行的数据

我已经做了一个函数,在数组中显示每个日期之间的所有日期,称为“dateRange”。我还创建了另一个名为“运行时”的项目,显示活动运行了多少天

全选(显然)

选择本月开始

$result = mysql_query("SELECT * FROM campaign WHERE YEAR( START ) = YEAR( CURDATE( ) ) AND MONTH( START ) = MONTH( CURDATE( ) )");
$result = mysql_query("SELECT * FROM campaign WHERE YEAR( END ) = YEAR( CURDATE( ) ) AND MONTH( END ) = MONTH( CURDATE( ) ) LIMIT 0 , 30");
选择本月结束

$result = mysql_query("SELECT * FROM campaign WHERE YEAR( START ) = YEAR( CURDATE( ) ) AND MONTH( START ) = MONTH( CURDATE( ) )");
$result = mysql_query("SELECT * FROM campaign WHERE YEAR( END ) = YEAR( CURDATE( ) ) AND MONTH( END ) = MONTH( CURDATE( ) ) LIMIT 0 , 30");
代码示例

while($row = mysql_fetch_array($result))
{
$dateArray = dateRange($row['start'], $row['end']);

echo "<h3>" . $row['campname'] . "</h3> Start " . $row['start'] . "<br /> End " . $row['end'];
echo runTime($row['start'], $row['end']);
print_r($dateArray);
}
while($row=mysql\u fetch\u array($result))
{
$dateArray=dateRange($row['start'],$row['end']);
回显“$row['campname']”开始“$row['Start']”。
结束“$row['End']”; echo运行时($row['start'],$row['end']); 打印(日期数组); }

关于日期,MySql数据库只保存活动的开始日期和结束日期。

要检测日期/时间的重叠,可以执行以下操作:

//range of dates to get overlap. means if any row in the database has
//a day in its start/end range that falls between these days
$startDate = '2012-06-01';
$endDate = '2012-06-30';

$sql = "SELECT *
    FROM campaign
    WHERE
        `start` < '$endDate'
        AND `end` > '$startDate'";
//要重叠的日期范围。表示数据库中的任何行
//介于这两天之间的开始/结束范围内的一天
$startDate='2012-06-01';
$endDate='2012-06-30';
$sql=“选择*
从竞选活动
哪里
`开始“<'$endDate”
和'end`>'$startDate';
这将查找活动中任何日期介于$startDate和$endDate之间的行。这也适用于所有活动…:

  • 在$startDate之前开始,在$endDate之前结束(日期范围之间的结束日期)
  • 在$startDate之后开始,在$endDate之前结束(日期范围之间的开始和结束)
  • 在$startDate之前开始,在$endDate之后结束(开始和结束包含日期范围)
  • 在$startDate之后开始,在$endDate之后结束(日期范围之间的开始日期)

  • 此外,当前的查询将$startDate和$endDate作为独占查询。这意味着,如果某件事从5月31日开始(基于上述示例日期),到6月1日结束,则不包括在内。如果您希望日期包含在内,您可以将
    更改为code>=和
    ,这非常完美,正是我所希望的!非常感谢你。