2

バックエンドとしてpgsqlを使用してphpアプリケーションを構築しています。available=1,3,5(月曜日、水曜日、金曜日を意味する)として値を指定したデータベースからロードする必要がある日付の量だけ日付を増やしたいと思います。これらの利用可能な日付を増やしたいと思います。現在の日付までの値。date() 関数で N 形式を使用して、データベースの使用可能なフィールドに格納される 1 から 7 までの週の日の値を表します

現在の日付 = 22-07-2013 が月曜日の場合、これを水曜日 (利用可能 = 3)、次に金曜日 (利用可能 = 5)、そして次の週の月曜日にインクリメントする必要があります。

などなど..しかし、私はそれを行うことはできません..そのタプルのタプルに応じて available の値が変化するようなコードが必要です。 . だから私がそれを達成するのを手伝ってください。

使用したコードを添付しますので、よろしければご覧ください。

<?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;}
     }
 }
?>

where dept_id -> テーブルの主キー dept $db->query($sq); -> クエリは、指定された値を取得するために使用され、プログラム フォルダー内の database.php という名前の別のファイルで定義されます。f_time および t_time -> from_time および to_time を記述するテーブル dept のフィールド。f_time はインクリメントを開始する必要がある時間であり、t_time はこのインクリメントを終了する時間です。

私が提供したコードに改善点があるかどうかお知らせください。.

4

2 に答える 2

0

私が言えることから、あなたは次のようなものを求めています

UPDATE sometable
    SET some_date_column = some_date_column + ('1 day'::INTERVAL * some_integer_value);
于 2013-07-22T15:27:26.367 に答える
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 プロシージャを介して再現する方法はわかりません。

于 2013-07-22T12:09:54.733 に答える