使用 subdate 在自定义列中计算以获取前一天

Posted

技术标签:

【中文标题】使用 subdate 在自定义列中计算以获取前一天【英文标题】:Calculate in a custom column by using subdate to get the previous day 【发布时间】:2020-03-05 04:41:59 【问题描述】:

我正在尝试在 mysql 中使用 subdate 方法,但我无法得到我想要的...

考虑一下我有下表:

表:

id    created_at    value
1     2019-03-19    50
2     2016-03-20    100
3     2016-03-21    87

我想创建一个显示 3 列的视图并添加一个自定义,这基本上是当前值与前一天的值之间的差异。

在示例中,我的视图输出应该是:

id    created_at    value    diff
1     2019-03-19    50       0
2     2016-03-20    100      50
3     2016-03-21    87       -13

感谢您的帮助

【问题讨论】:

哪个 MySQL 版本作为 MySQL 8 使得使用 LEAD/LAG 更容易,否则您必须使用 MySQL 用户变量或相关子查询来模拟它 我使用的是mysql workbench 8.0 【参考方案1】:

在 MySQL 8.0 中,你可以使用lag():

select 
    t.*,
    coalesce(value - lag(value) over(order by created at), 0) diff
from mytable t

在早期版本中,您可以自联接表并使用带有相关子查询的not exists 条件来获取先前的记录:

select
    t.*,
    coalesce(t.value - t1.value, 0) diff
from mytable t
left join mytable t1 
    on t1.created_at < t.created_at
    and not exists(
        select 1
        from mytable t2
        where t2.created_at < t.created_at and t2.created_at > t1.created_at
    )

【讨论】:

谢谢!使用您答案的第二部分,这对我有用。你在这个答案中做了一个小错字:“coalsece”。如果可以,请编辑它 @WilliamW:欢迎!感谢您发现错字,我相应地编辑了我的答案。

以上是关于使用 subdate 在自定义列中计算以获取前一天的主要内容,如果未能解决你的问题,请参考以下文章

在自定义列中显示高级自定义字段值 (wp_list_table)

在自定义列中手动插入文本,并且应该在刷新报告时可见

如何根据可用性表计算下一天/同一天?

存储选定的 ID,获取以显示在自定义路由视图中

无法在自定义分类存档页面上获取选项页面自定义字段

WordPress:在自定义帖子类型中获取模块名称的帖子 slug