【问题标题】:SQLlite query to get data between 2 DatetimeSQLite 查询以获取 2 个日期时间之间的数据
【发布时间】:2015-05-04 20:04:03
【问题描述】:

我正在使用下面的查询在提到的开始时间(距开始时间 2 小时)和结束时间之间从数据库获取数据,但此查询似乎不起作用。

REC_CONT_TIME 列是日期时间,格式为YYYY-MM-DD HH:MM

查询是:

SELECT * FROM REC_CONTACT WHERE datetime('now')

之间

strftime('%Y-%m-%d %H:%M:%S',REC_CONT_TIME)

datetime(strftime('%Y-%m-%d %H:%M:%S',REC_CONT_TIME),'+120分钟')

开始时间: strftime('%Y-%m-%d %H:%M:%S',REC_CONT_TIME)

结束时间: datetime(strftime('%Y-%m-%d %H:%M:%S',REC_CONT_TIME),'+120 分钟')。 从开始时间开始增加 120 分钟。

【问题讨论】:

  • 为什么不在Java代码中格式化开始日期时间/结束日期时间并将它们作为参数传递?
  • @Loc Ha 您能否添加更多详细信息.. 格式化方式和内容?
  • 另一个问题是:你确定 datetime('now') 返回 YYYY-MM-DD HH:MM 格式吗?
  • 是的,这是正确的......在"YYYY-MM-DD HH:MM" 格式

标签: android sql sqlite datetime


【解决方案1】:

如果您在 datetime('now') 函数中不包含“localtime”,则您将使用 GMT 时间。这很可能不是您的日期所在的时区,并且不会返回任何值,因为它不在您的 2 小时窗口内。

你可以看到这个查询的不同之处:

select datetime('now'),datetime('now','localtime')

试试这个:

SELECT * 
FROM REC_CONTACT 
WHERE datetime('now','localtime')
    BETWEEN
        strftime('%Y-%m-%d %H:%M:%S',REC_CONT_TIME)
    AND
        datetime(strftime('%Y-%m-%d %H:%M:%S',REC_CONT_TIME),'+120 minutes')

【讨论】:

    【解决方案2】:

    如果我理解,您正在尝试从表中获取日期值在 startDate 到 endDate 范围内的所有行。

    假设 startDate 是 NOW 并且 endDate 是 NOW + 120 分钟,您可以使用这个查询:

    SELECT *
    FROM REC_CONTACT
    WHERE strftime('%s', REC_CONT_TIME )  
    BETWEEN strftime('%s', 'now','localtime') 
    AND strftime('%s', datetime(strftime('%Y-%m-%d%H:%M:%S','now','localtime'),'+120 minutes')) 
    

    this fiddle

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 2016-05-22
      • 1970-01-01
      • 2014-05-04
      • 2014-09-22
      • 1970-01-01
      相关资源
      最近更新 更多