我正在尝试计算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'
我在模型中始终拥有period
和start date
,只想使用这两个来计算end date
。问题是我在许多条件之后计算start
日期。在end date
中获取mysql query
的最佳方法是什么?提前谢谢。
答案 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天应该用您知道的持续时间替换。
如果您将参数作为变量获取,则可以添加存储过程或简单地连接字符串:
$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); "