【问题标题】:Sqlite3: Select data from timestamp to x minutesSqlite3:从时间戳到x分钟选择数据
【发布时间】:2020-08-20 21:57:19
【问题描述】:

我在数据库中有一组数据,其中包含来自DATETIME 时间戳的一系列条目。

我正在尝试编写一个函数来选择从开始时间到由“x 分钟”定义的结束时间的所有内容。

例如,从我的测试数据库数据集中,我想选择从2020-05-04 04:49:05+2 minutes 的所有内容。

我已阅读此sqlite3 date time reference,但似乎无法使其正常工作。

我的表架构:

CREATE TABLE tableTest (TIMESTAMP1 DATETIME DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),data1 uint8_t,data2 uint8_t,data3 uint8_t,data4 uint8_t,data5 uint8_t,data6 uint8_t,data7 uint8_t,data8 uint8_t);

我一直在尝试遵循这种格式的查询,但不起作用:

select * from tableTest where timestamp1 >= strftime('2020-05-04 04:49:02', '+2 minutes');

我不确定如何正确格式化 sql,因此我们将不胜感激。

【问题讨论】:

    标签: c++ sql sqlite time


    【解决方案1】:

    函数strftime()用于格式化日期。
    你应该像这样使用datetime()

    select * from tableTest 
    where timestamp1 between 
      datetime('2020-05-04 04:49:02')
      and  
      datetime('2020-05-04 04:49:02', '+2 minutes');
    

    【讨论】:

    • 感谢 Forpas 的建议。我试过了,但它似乎选择了表格中的所有内容,而不是 2 分钟内的内容(即'2020-05-04 04:49:02' - '2020-05-04 04:51:02'
    • 在这种情况下,datetime('2020-05-04 04:49:02')'2020-05-04 04:49:02' 相同
    • 做到了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2015-09-14
    • 2021-03-13
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多