Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 - Fatal编程技术网

如何判断新的一个月是否已经开始?php/mysql

如何判断新的一个月是否已经开始?php/mysql,php,mysql,date,Php,Mysql,Date,我将2010-2040年的日期以以下格式存储在mySQL表中: 2012-01-02 我从表中选择每个日期,并在while-mysql\u fetch\u assoc循环中显示它们 while($row=mysql_fetch_array($result)){ echo $row["date"]; } 我如何检查新的一个月是否已经开始?我怀疑我需要使用explode()将当前月份计数器放置在变量中。。。但是,既然var将在while循环中被覆盖,那么如何进行比较呢 if(old m

我将2010-2040年的日期以以下格式存储在mySQL表中:

2012-01-02

我从表中选择每个日期,并在while-mysql\u fetch\u assoc循环中显示它们

while($row=mysql_fetch_array($result)){

    echo $row["date"];

}
我如何检查新的一个月是否已经开始?我怀疑我需要使用explode()将当前月份计数器放置在变量中。。。但是,既然var将在while循环中被覆盖,那么如何进行比较呢

if(old month != new month){
    do something..
}
谢谢

您可以使用它将几乎任何日期格式解析为其组件。例如:

$date = date_parse("2012-01-02");
var_dump($date);
将输出:

array(12) {
  ["year"]=>
  int(2012)
  ["month"]=>
  int(1)
  ["day"]=>
  int(2)
  ["hour"]=>
  bool(false)
  ["minute"]=>
  bool(false)
  ["second"]=>
  bool(false)
  ["fraction"]=>
  bool(false)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(false)
}
…您的代码应该是这样的:

$month = false;
while( $row = mysql_fetch_array($result) ) {
    $date = date_parse( $row["date"] );

    if( $month != $date["month"] ) {
        $month = $date["month"];
        echo "month: {$month}<br />";        
    }

}
$month=false;
while($row=mysql\u fetch\u数组($result)){
$date=date_parse($row[“date”]);
如果($month!=$date[“month”]){
$month=$date[“month”];
echo“月:{$month}
”; } }

你真的应该停止使用函数,它们已经被弃用了。试试看,如果你不知道哪一个更合适,。

如果你只需要一个月,那么你不必在php中分解日期格式,你可以在mysql查询中获得月份,如

$query = "select month(date) as mont from table_name";

并检查其余内容。

您可以在查询中使用存储变量执行此操作:

set @prevmonth := null;

select if(month(datefield) <> month(@prevmonth), true, false) AS new_month, @prevmonth := month(datefield), ....
FROM ...
set@prevmonth:=null;
选择是否(月(日期字段)月(@prevmonth)、true、false)作为新月份,@prevmonth:=月(日期字段)。。。。
从…起
然后,只需在获取代码中检查这个新派生的
new\u month
字段——只要您到达一个新的月份,它就会是1/true

注意:因为第一行的比较将针对null@prevmonth进行,所以第一行显示为0/false。您可能希望第一行为真,但这超出了所有这些的范围

set @prevmonth := null;

select if(month(datefield) <> month(@prevmonth), true, false) AS new_month, @prevmonth := month(datefield), ....
FROM ...