SQL 时间戳查询:检查一个时间戳是不是早于另一个

Posted

技术标签:

【中文标题】SQL 时间戳查询:检查一个时间戳是不是早于另一个【英文标题】:SQL Timestamp query: Check if one timestamp is earlier than anotherSQL 时间戳查询:检查一个时间戳是否早于另一个 【发布时间】:2019-12-10 16:42:47 【问题描述】:

对于 CallLogTable....我需要编写一个查询来查找其中一行的 created_ts 时间戳比该行的 updated_ts 时间戳更早的时间戳立即之前。第 1 行和第 2 行是一个示例(第 2 行的 created_ts 早于第 1 行的 updated_ts)。我见过 Rownums 的使用,但不知道如何在这里应用它。非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

您可以使用窗口函数。 lag() 允许您访问上一行,然后您可以比较相关列:

select *
from (
    select  
        t.*,
        lag(updated_ts) over(order by id) lag_updated_ts
    from mytable t
) t
where created_ts < lag_updated_ts

这假定列id 可用于对记录进行排序。如果您想要不同的列进行排序,则可以更改窗口函数的order by 子句。

【讨论】:

有没有办法(在 SQL Server 中)可以忽略毫秒差异?即仅返回存在秒数差异的场景 有没有办法可以排除这个查询中的毫秒数?非常感谢。 (或者更理想地说是 5 秒的时间差)

以上是关于SQL 时间戳查询:检查一个时间戳是不是早于另一个的主要内容,如果未能解决你的问题,请参考以下文章

python redistimeseries 时间戳不能早于时间序列中的最新时间戳

删除早于几天的邮件 - 使用 MAP 的时间戳

Stripe 创建使用记录错误 - 时间戳必须早于订阅的当前周期结束时间 - Date.now()?

SQL 从时间戳中提取小时

Scala:检查当前时间戳是不是大于我的数据框中的时间戳列

检查字符串是不是为unix时间戳