【问题标题】:SQL time between communication通信之间的 SQL 时间
【发布时间】:2020-07-18 20:42:05
【问题描述】:

大家好,希望你们都平安,

我在 SQL 中有一个带有时间戳的表,我想在我订购它们 DEC 后计算 2 次通信之间的时间

我到处寻找,但不幸的是没有任何成功:( 理想的结果应该与黄色列相同

提前致谢!

【问题讨论】:

    标签: sql postgresql timestamp datediff


    【解决方案1】:

    您可以使用lag()获得差异:

    select t.*,
           (timestamp - lag(timestamp, 1, timestamp) over (order by timestamp)) diff_interval
    from t;
    

    我不知道将间隔转换为分钟是否是您问题的重要部分。

    如果秒精度足够,您可以使用:

    select t.*,
           (timestamp - lag(timestamp, 1, timestamp) over (order by timestamp)),
           extract(epoch from (timestamp - lag(timestamp, 1, timestamp) over (order by timestamp))) / 60.0 as minutes
    from t;
    

    【讨论】:

    • 谢谢伙计,这条语句运行了,但我仍然得到 TIMESTAMP 的结果,而不是十进制或分钟
    • 仅供参考,在某种程度上扩展了@GordonLinoff 的答案。您的陈述“但我仍然得到 TIMESTAMP 的结果”不正确。当你减去时间戳时,你会得到一个时间戳,你会得到一个间隔(戈登处理的)。虽然时间戳和间隔在视觉上可能看起来相同,但它们却大不相同。例如,您不能添加时间戳,但可以添加间隔并将间隔添加到时间戳。见here
    • @Belayer 。 . .亚辛是对的。我第一次回答时忽略了减法。
    猜你喜欢
    • 2014-02-16
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多