在MySQL查询中添加30天的间隔

时间:2016-11-08 12:42:07

标签: php mysql sql intervals

我目前有一个在活动日历中添加订单的工作代码,但我不想添加订单附带的到期日期(订单发送后30天)。

    //Include db configuration file
    include 'connect.php';
    $currentDate = date("Y-m-d H:i:s");
    //Insert the event data into database
    $insert = $conn->query("INSERT INTO events (title,date,created,modified,tht) VALUES ('".$title."','".$date."','".$currentDate."','".$currentDate."','".$date." + INTERVAL 30 DAY')");
    if($insert){
        echo 'ok';
    }else{
        echo 'err';
    }

目前此代码工作正常,但是发货日期与到期日期相同,而不是我想要的30天。我在这里错过了什么?

1 个答案:

答案 0 :(得分:2)

您可以在php中执行此操作:

//Include db configuration file
include 'connect.php';
$currentDate = date("Y-m-d H:i:s");
$endDate = date("Y-m-d H:i:s", strtotime('+30 days', strtotime($date)));
//Insert the event data into database
$insert = $conn->query("INSERT INTO events (title,date,created,modified,tht) VALUES ('".$title."','".$date."','".$currentDate."','".$currentDate."','".$endDate."')");
if($insert){
    echo 'ok';
}else{
    echo 'err';
}

或直接在mysql中:

//Include db configuration file
include 'connect.php';
$currentDate = date("Y-m-d H:i:s");
//Insert the event data into database
$insert = $conn->query("INSERT INTO events (title,date,created,modified,tht) VALUES ('".$title."','".$date."','".$currentDate."','".$currentDate."',DATE_ADD('".$date."', INTERVAL 30 DAY))");
if($insert){
    echo 'ok';
}else{
    echo 'err';
}

我会选择第一种方法,因为至少计算日期的逻辑只会在一个地方 - 在php中。否则,如果你在mysql和php服务器上设置的时区有所不同,你可能会遇到从php和mysql返回的日期时间的差异。 所以最好将日期时间逻辑留在php中。

相关问题