我正在使用pgsql作为后端构建一个php应用程序。我想把日期增加一些应该从我的数据库加载的日期,这些数据库的值为可用=1,3,5(意味着一周中的星期一、星期三、星期五)。我想把这些可用值增加到当前日期。我在date()函数中使用N格式将一周中的天数表示为1到7,存储在数据库的可用字段中
如果当前日期=2013年7月22日,也就是星期一,那么我必须将其增加到星期三(可用=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->表dept的主键$db->查询($sq);->query用于获取给定的值,并在程序文件夹中另一个名为database.php的文件中定义。表dept中描述from_time和to_time的f_time和t_time->字段。f_time是我们必须开始增量的时间,t_time是结束该增量的时间。
请告诉我我给出的代码是否有任何改进。
您可以做的事情如下:
你说你想增加多少天。并给出可用的数组。
<?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过程来重现它。
据我所知,你正在追求类似的东西
UPDATE sometable
SET some_date_column = some_date_column + ('1 day'::INTERVAL * some_integer_value);