【问题标题】:Perform range query on sqlite datetime column or on string column(which having dateTime)对 sqlite 日期时间列或字符串列(具有日期时间)执行范围查询
【发布时间】:2013-11-07 09:27:18
【问题描述】:

net.dll 用于在 sqlite 上执行操作。我正面临 sqlite 数据库的问题,例如我将列创建为文本名称为 DateTime 并将日期字符串存储到其中。我想要一些日期范围内的条目,但我无法执行查询。

使用查询作为“日期”的日期时间列类型: **

SELECT * FROM TableName WHERE ColumnName BETWEEN '1800-1-1' AND '2010-12-12'

**

使用查询日期时间列的类型为“字符串”:

**

SELECT * FROM MD5_HEADER WHERE Sent BETWEEN '4/1/2007 12:01:00 AM' AND '12/1/2010 4:05:36 AM'

**

如果有人对此问题有解决方案,请帮助我。

(c#, Sqlite.net.dll, framework3.5)

【问题讨论】:

    标签: c# sqlite datetime .net-3.5


    【解决方案1】:

    尝试用零填补空白:

    SELECT * FROM TableName WHERE ColumnName BETWEEN '1800-01-01' AND '2010-12-12'
    

    【讨论】:

      【解决方案2】:

      首先,SQLite 没有date 类型。它将日期存储为textinteger。 假设您的列是 text 类型,第一个查询看起来是正确的,因为 ISO 8061 格式的日期具有字典顺序。看起来您在语句末尾缺少一个分号。

      【讨论】:

      • 但它基于字符串检查,因此结果显示错误值。以及主要如何在 sqlite 中添加日期时间格式。 (使用 c#)因为它不接受 dateTime.ToString() 作为 dateTime 的输入
      • 假设列类型定义为TEXT,您需要做的就是提供一个 ISO 格式的日期字符串。见stackoverflow.com/questions/114983/…。这篇文章stackoverflow.com/questions/8099845/… 中有示例代码,演示了如何在具有日期时间列的表中插入一行。
      猜你喜欢
      • 1970-01-01
      • 2020-10-03
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 2020-03-08
      相关资源
      最近更新 更多