将工作时间插入mysql

时间:2013-01-29 21:50:37

标签: php mysql datetime insert

我正在试图立即用PHP和MySQL插入工作时间(仅限工作日)。

  

来自:01.02.2013 08:30
  致:28.02.2013 17:30

然后它应该插入每个工作日,直到2013年2月28日

  

01.02.2013 08:30 -01.02.2013 17:30
  02.02.2013 08:30 -02.02.2013 17:30
  03.02.2013 08:30 -03.02.2013 17:30
  ...

您能否提供一些提示从哪里开始?

我只使用以下代码插入日期..

$startDate = $rsnew["starttime"];  
$endDate =  $rsnew["endtime"];      

// Convert to UNIX timestamps                          
$currentTime = strtotime($startDate);
$endTime = strtotime($endDate);

// Loop until we reach the last day
$result = array();                          
while ($currentTime <= $endTime) {
    if (date('N', $currentTime) < 6) {
        $result[] = date('Y-m-d', $currentTime);
    }
    $currentTime = strtotime('+1 day', $currentTime);
    echo "Hallo" .$currentTime;   
}  

// start insertion        
foreach($result as $value)        
{
    $MyResult = ew_Execute("INSERT INTO dates (date) VALUES ('".$value."')");
    echo "Hallo" .$value;                                                         
}                          

1 个答案:

答案 0 :(得分:0)

你可能不再需要这个了,但这是一个非常有效的简单方法:

$start    = new DateTime('2013-02-01');
$finish   = (new DateTime('2013-02-28'))->add(new DateInterval('P1D'));
$interval = new DateInterval('P1D');
$period   = new DatePeriod($start, $interval, $finish);
$dates    = array();

foreach ($period as $dt) {
    $dates[] = $dt->format('Y-m-d');
}

$MyResult = ew_Execute("INSERT INTO dates (date) VALUES ('" . implode("'),('", $dates) . "')");

以下是这样做:

  1. 为我们的开始日期和结束日期创建DateTime个对象(我们必须在结束日期添加一天,因为我们在下面创建的循环不包括最后一天)。
  2. 创建一个DateInterval对象,表示我们在循环播放它们时(1天)增加DateTimes的数量。
  3. 创建一个DatePeriod对象,允许我们遍历我们想要的日期。
  4. 创建一个空数组来存储我们稍后将添加到数据库的日期。
  5. 循环开始日期和结束日期之间的日期,将日期添加到我们的数组中。
  6. 使用implode()创建一个查询而不是[ num days ]查询,这样可以更快地执行。