我正在构建一个使用pgsql作为后端的php应用程序。 我想将日期增加一些日期,应该从我的数据库中加载,这些日期的值已经可用= 1,3,5(暗示星期一,星期三,一周的星期五)。我想增加这些日期值到当前日期。我在date()函数中使用N格式将一周中的天数值表示为1到7,它存储在数据库的可用字段中
如果当前日期= 22-07-2013这是星期一,那么我必须将此增加到星期三(可用= 3)然后再到周五(可用= 5)然后到下周的星期一。
等等...... 但我不能那样做.. 我需要这样一个代码,其中可用的值可能会根据该元组中的元组而改变。所以我想根据可用值增加当前日期。 所以请帮助我实现它。
我使用的代码附在此处。请看一下。
<?php
$sq = "SELECT * FROM $db->db_schema.dept where active='Y' and dept_id=$dept_id";
$result = $db->query($sq);
$ftime=$result[0]['f_time'];
$ttime=$result[0]['t_time'];
$a=date('Y-m-d').$ftime;
$b=date('Y-m-d').$ttime;
$to_time = strtotime("$b");
$from_time = strtotime("$a");
$minutes= round(abs($to_time - $from_time) / 60,2). " minute";
$days=array();
$days= explode("," , $result[0]['available']);
$result[0]['available'];
$intl=$result[0]['slot_interval'];
$slots=$minutes/$intl;
$dt1 =date("m/d/Y $ftime ");
$s_mnts=explode(":",$ftime);
$m= date('N');
-- $dt=array();
$a=$dt1;
$l=0;
for($n=1;$n<=3;$n++)
{
for($k=$m;$k<=7;$k++)
{ $l=$l+1;
if(in_array($m,$days))
{
echo "dasdsa";
echo date("Y-m-d H:i:s", strtotime("$a +$l days"));
echo"<br>";
}
$m=$m+1;
if($m==7){$m=1;}
}
}
?>
,其中 dept_id - &gt;表部门的主键 $ DB-&GT;查询($ SQ); - &GT; query用于获取给定值,并在程序文件夹中名为database.php的另一个文件中定义。 f_time和t_time - &gt;表dept中描述from_time和to_time.f_time的字段是我们必须开始递增的时间,t_time是结束此增量的时间。
请告知我我所提供的代码是否有任何改进。
答案 0 :(得分:0)
你能做的是这样的事情:
您说要增加多少天。并提供一系列可用的信息。
<?php
$inicialDate = time(); //Timestamp of the date that you are based on
$tmpDate = $inicialDate; //Copy values for tmp var
$increment = 5; //Increment five days
$available = [1,3,5]; //Days available
/*Ok, now the logic*/
while($increment > 0){
$tmpDate = strtotime("+1 day", $tmpDate); //Increase tmpdate by one day
if(in_array(date("N",$tmpDate), $available){ //If this day is one of the availables
$increment--;
}
}
$finalDate = date("m/d/Y",$tmpDate);
?>
这个逻辑应该可行,但我不知道如何通过SQL过程重现它。
答案 1 :(得分:0)
据我所知,你是在追求
之类的东西UPDATE sometable
SET some_date_column = some_date_column + ('1 day'::INTERVAL * some_integer_value);