如何根据sql中的开始日期和周期计算结束日期?

时间:2015-04-24 06:17:48

标签: php

我正在尝试计算sql中的结束日期。我必须插入一个结构类似于

的表

Subscription_id(auto_increment)|service_id(int)|user_id|start_date|end_date

现在我从另一个已修复的服务表中得到句点。开始日期是经过大量操作后计算出来的,但我确实有一个正确的开始日期和时间段。我也有这个问题

INSERT INTO subscription SET user_id = '44', service_id = '2', start_date = '2015-04-13'

我在模型中始终拥有periodstart date,只想使用这两个来计算end date。问题是我在许多条件之后计算start日期。在end date中获取mysql query的最佳方法是什么?提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用DATE_ADD函数:

INSERT INTO subscription 
    SET user_id = '44', 
    service_id = '2', 
    start_date = '2015-04-13',
    end_date = DATE_ADD('2015-04-13', INTERVAL 1 DAY);

其中1天应该用您知道的持续时间替换。

MySQL DATE_ADD Documentation

如果您将参数作为变量获取,则可以添加存储过程或简单地连接字符串:

$sql = "INSERT INTO subscription 
    SET user_id = '$userID', 
    service_id = '$serviceID', 
    start_date = '$start_date', 
DATE_ADD('$start_date', INTERVAL $period DAY)";

答案 1 :(得分:1)

使用DATE_ADD函数

SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY);

在您的情况下,将开始日期分配给变量,然后在查询中使用它

SET @variable1 = <calculated start date>
SET @period = <your period in days>

INSERT INTO subscription SET user_id = '44', service_id = '2', start_date = @variable1, end_Date = DATE_ADD(@variable1,INTERVAL @period DAY)

编辑:将整个查询分配到查询字符串

$sqlQuery = "SET @variable1 = <calculated start date>; SET @period = <your period in days>;
INSERT INTO subscription SET user_id = '44', service_id = '2', start_date = @variable1, end_Date = DATE_ADD(@variable1,INTERVAL @period DAY); "