首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL的日期栏中添加天数?

如何在MySQL的日期栏中添加天数?
EN

Stack Overflow用户
提问于 2017-11-27 02:25:07
回答 1查看 687关注 0票数 2

我在数据库里有一张简单的桌子。该表具有date_start,而added_days column.This是具有普通SELECT的表。

代码语言:javascript
复制
id    date_start    added_days
 1    2017-10-10             2
 2    2017-10-10             4
 3    2017-10-10             6
 4    2017-10-10             6
 5    2017-10-10             3

我知道如何将天添加到date_start列中。但是,如何使date_start值与前一个date_start相同

我现在的SELECT

SELECT DATE_ADD(date_start, INTERVAL added_days DAY) AS 'new_date',added_days FROM test

代码语言:javascript
复制
id      new_date    added_days
 1    2017-10-12             2
 2    2017-10-14             4
 3    2017-10-16             6
 4    2017-10-16             6
 5    2017-10-13             3

我的预期产出:

代码语言:javascript
复制
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中是不可接受的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-27 04:00:37

这个概念可以用这个答案需要的方式来完成。我使用MySQL变量,像一个内联程序。

代码语言:javascript
复制
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变量中,用于下一个记录的"Date_Add()“过程。

我的工作解决方案可以在演示找到

澄清。

两个变量用于保留“最后一个日期”,一个用于在当前记录之后提前的天数。所以,为了按顺序处理行,把它当作.

@lastDate = '2017-01-01‘--只是一个位置持有者--声明变量@lastNumDays =0--另一个位置持有者,用于随后添加到基准日期

第一个记录,IF()被应用,@lastNumDays = 0,因此它将"Date_Start“放入@lastDate变量,但成为"New_Date”列。接下来,将added_Days存储到@lastNumDays变量中,并成为"added_Days“列。

因此,在根据样本数据处理第一行的末尾,

代码语言:javascript
复制
@lastDate = '2017-10-10' and
@lastNumDays = 2

现在,我们进入数据的第二行。IF()在@lastNumDays中有一个值,并使用@lastDate,并向其添加2天。所以现在

代码语言:javascript
复制
@lastDate = '2017-10-12'
@lastNumDays = 4

下一张唱片..。将添加的4天应用到10/12日期,并成为

代码语言:javascript
复制
@lastDate = '2017-10-16'
@lastNumDays = 6

等等。现在,为开始日期有一个固定的列值这一事实可以通过将该列预先定义为起点来简化,但是我不知道您的环境、临时表/永久表等等来进行调用,这足以得到您想要的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47503134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档