如何判断新的一个月是否已经开始?php/mysql
我将2010-2040年的日期以以下格式存储在mySQL表中: 2012-01-02 我从表中选择每个日期,并在while-mysql\u fetch\u assoc循环中显示它们如何判断新的一个月是否已经开始?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
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 ...