【问题标题】:sql server query about unix time关于unix时间的sql server查询
【发布时间】:2016-06-18 10:41:54
【问题描述】:

我有一个包含船舶信号条目的 4 列表。第一列是带有 3 个月行条目的 unix 时间。第二个是船名。第三是经度。第四是纬度。同一艘船有许多不同时间的条目。我想要一个 sql server 查询,以查找一个 ship 的表行,其中没有条目超过 10 分钟且少于 5 小时。

【问题讨论】:

  • 那么你在哪一部分有问题,到目前为止你尝试过什么?
  • 您要求我们为您编写查询,但您甚至没有费心提供适当的 DDL。

标签: sql sql-server unix-timestamp


【解决方案1】:

这样的事情应该为你做事(CTE + ROW_NUMBER() 和自我加入):

;WITH cte AS(
SELECT  unixtime, 
        shipname, 
        longitude, 
        latitude, 
        ROW_NUMBER() OVER (PARTITION BY shipname ORDER BY unixtime) as rn
FROM YourTable)

SELECT *
FROM cte c1
LEFT JOIN cte c2
    ON c1.shipname = c2.shipname and c1.rn = c2.rn -1
    AND (c2.unixtime - c1.unixtime) between 600 and 18000
WHERE c2.unixtime IS NULL

Epoch 时间戳 (unixtime) 是自 1970-01-01T00:00:00Z 以来的秒数,因此您需要将 10 分钟换算为秒 (600) 和 5 小时换算为秒 (18000)。

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 2011-12-17
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多