【问题标题】:How to find matching timestamp?如何找到匹配的时间戳?
【发布时间】:2017-06-13 04:01:43
【问题描述】:
+----------------------------+   +----------------------------+
| ID |       Date            |   | ID |       Date            |
+----------------------------+   +----------------------------+
| 1  |   2017-06-13 22:10:01 |   | 1  | 2017-06-20 22:10:50   |
+----------------------------+   +----------------------------+
| 2  |   2017-06-14 13:22:20 |   | 2  | 2017-06-23 22:10:55   |
+----------------------------+   +----------------------------+
| 3  |   2017-06-16 22:10:01 |   | 3  | 2017-06-27 22:10:35   |
+----------------------------+   +----------------------------+
                                 | 4  | 2017-07-04 22:10:07   |
                                 +----------------------------+

我有 2 个表,相同的列。第一个将是一个样本,每周有条目,每个条目相差 1 分钟(总共 10 080 个条目)。而另一个每次(1 分钟)无限期地获取新值。

我尝试做的是将每个新条目与第一个数据库中的条目进行比较。但我想根据工作日和时间(相同的小时和相同的分钟)进行比较。

例如,周一 11:00(无论月、日和年)的条目应与示例数据库中周一 11:00 的条目进行比较。

我想要做的是在与第二个表中的条目相同的工作日时从示例数据库中获取条目的编号:

2017-06-20 22:10:50 应该返回 1。
2017-06-23 22:10:55 应该返回 3.
2017-06-27 22:10:35 应该返回 1.
2017-07-04 22:10:07 应该返回 1。

编辑2:

当我解释这两个表的用途时,我想你可能会更好地理解事情。

我的数据库中的真实表有更多列:传感器的 id 和它们的值。
第一个表,样本表,将接收一整周的数据。它被用作参考。
第二个表每分钟接收一次数据,当一个数据进入时,它应该与样本表中的一条记录进行比较,以检测值是否相等(异常值)。 所以我想通过与同一工作日、同一小时和分钟的记录进行比较来检测异常值。

【问题讨论】:

  • 请详细说明。显示第二个数据库的示例数据和期望的结果。
  • 我编辑了我的第一篇文章。希望这会有所帮助。
  • 我实际上有 2 个数据库 ...我认为你的意思实际上是我有 2 个
  • 另外,我看不出提供的样本数据与预期结果之间有任何关系。例如第一个表的数据中没有22:10:50时间戳。
  • 当示例表包含多个匹配行时会发生什么?

标签: sql sqlite


【解决方案1】:

嗯,我想我找到了我要找的东西。这是一个有用的链接:Get month from DATETIME in sqlite

这是匹配时间戳的方法:

//Matching weekday
select * from table where strftime('%w', Date) = '0';

//Matching weekday + hours and minutes
select * from table where strftime('%w', Date) = '0' and strftime('%H:%M', Date) = '22:10';

还是谢谢你们。

【讨论】:

    猜你喜欢
    • 2021-02-26
    • 2016-08-05
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2014-02-07
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多