Php 如何在MySQL的日期列中添加天数?
我在数据库中有一个简单的表。该表具有“开始日期”和“添加天数”列。这是具有“正常选择”的表: 我知道如何将日期添加到“开始”列。但是,如何使日期开始值与上一个日期开始值相同 我的当前选择: 选择日期添加日期开始,间隔添加天数作为“新日期”,从测试添加天数 我的预期产出:Php 如何在MySQL的日期列中添加天数?,php,mysql,Php,Mysql,我在数据库中有一个简单的表。该表具有“开始日期”和“添加天数”列。这是具有“正常选择”的表: 我知道如何将日期添加到“开始”列。但是,如何使日期开始值与上一个日期开始值相同 我的当前选择: 选择日期添加日期开始,间隔添加天数作为“新日期”,从测试添加天数 我的预期产出: id new_date added_days 1 2017-10-10 2 2 2017-10-12 4 3 2017-10-16
id new_date added_days
1 2017-10-10 2
2 2017-10-12 4
3 2017-10-16 6
4 2017-10-22 6
5 2017-10-28 3
注:
我也接受PHP解决方案,如果它在MySQL中不可能实现的话,这个概念也可以用同样的方法实现。我使用MySQL变量,就像一个在线程序一样
select
@lastDate := date_add( if( @lastNumDays = 0, date_start, @lastDate ), INTERVAL @lastNumDays DAY ) as new_Date,
@lastNumDays := added_days as added_days
from
YourTable ,
( select @lastDate := '2017-01-01',
@lastNumDays := 0 ) SQLVars;
SQLVARS别名用于在线创建变量。。。一个虚假的占位符日期,最后的天数默认为0,因此没有实际添加天数
select字段将使用-在第一次传递实际的第一个日期时,将零天作为开始,然后将该值设置到@lastDate变量中,以便在下一条记录中使用。下一个字段将天数分配到@lastNumDays变量中,用于下一条记录的日期添加过程
我的工作解决方案可以在
澄清
两个变量用于保存最后一个日期,一个变量用于保存当前记录之后的提前天数。因此,要按顺序处理行,请将其视为
@lastDate='2017-01-01'-充当占位符声明的变量
@lastNumDays=0-用于后续添加到基准日期的其他占位符
第一条记录应用了IF,@lastNumDays=0,因此它将日期开始放入@lastDate变量,但成为新的日期列。接下来,将added_Days存储到@lastNumDays变量中,并成为added_Days列
因此,在根据样本数据处理的第一行末尾
@lastDate = '2017-10-10' and
@lastNumDays = 2
现在,我们进入数据的第二行。
IF在@lastNumDays中有一个值,使用@lastDate代替,并向其添加2天。所以现在
@lastDate = '2017-10-12'
@lastNumDays = 4
下一张唱片。。。将添加4天的日期应用于10/12日期,并成为
@lastDate = '2017-10-16'
@lastNumDays = 6
等等。。现在,只需预先定义该列作为起始点,就可以简化开始日期的固定列值这一事实,但我对您的环境、临时/永久表等了解不够,无法进行调用,只足以得到您想要的答案。不可能?几乎不看那个链接是关于什么的?它是关于为我们节省一些类型。g:如果需要的话,我已经添加了一个提琴为什么@lastDate是2017-01-01?这里的变量比严格意义上的要多necessary@Strawberry,真的,让我们看看。。。我使用lastDate作为变量的占位符,在第一个日期开始记录之间的循环循环之后。我使用lastNumDays来保存应用于下一条记录时的日期提前多少天。如果你有一个更优雅的解决方案,我很乐意看到。@Vahn,请参阅修订后的答案,以澄清步骤。请参阅我在页面上的进一步评论。
@lastDate = '2017-10-12'
@lastNumDays = 4
@lastDate = '2017-10-16'
@lastNumDays = 6