【问题标题】:Error in Querying sqlite-net db based on a date range根据日期范围查询 sqlite-net db 时出错
【发布时间】:2014-03-13 23:51:49
【问题描述】:

我有一个问题,我正在编写一个搜索查询来根据日期范围进行搜索,该日期范围采用 string 格式。 问题是我无法在我指定的两个日期范围之间进行查询。

这是我的查询::

String query = "SELECT DISTINCT * FROM Object WHERE (( TransactionAccount = '" + parameter + "') AND (CAST(Amount AS REAL) BETWEEN " + min_amount + " AND " + max_amount + ") AND Date BETWEEN   Date(2012-01-02)  AND  Date(2014-01-02)  ) ";

querylist = dbConn.Query<Passbook_transaction.Object>(query).ToList<Passbook_transaction.Object>(); ;

但它返回 SQLite 异常。

错误似乎在“日期”中,因为删除日期查询有效。

【问题讨论】:

  • 确切的错误信息是什么?
  • 日期是函数名和你的列名?我可以在这里看到冲突。顺便问一下,你确定 Date (函数)只需要一个参数而不需要字符串引用吗?
  • 嗨,现在它没有返回错误,但查询列表大小显示为空。即使这些日期范围之间有交易。

标签: c# sqlite datetime windows-phone-8


【解决方案1】:

试试这个,引用日期:

String query = "SELECT DISTINCT * FROM Object WHERE (( TransactionAccount = '" + parameter + "') AND (CAST(Amount AS REAL) BETWEEN " + min_amount + " AND " + max_amount + ") AND Date BETWEEN   Date('2012-01-02')  AND  Date('2014-01-02')  ) ";

【讨论】:

    【解决方案2】:

    通过以“yyyy-MM-dd HH:mm:ss”格式(SQLite 接受)并使用以下查询在 db 中添加日期来解决问题:

     String query = "SELECT DISTINCT * FROM Object WHERE (( TransactionAccount = '" + parameter + "') AND (CAST(Amount AS REAL) BETWEEN " + min_amount + " AND " + max_amount + ") AND TDate BETWEEN   Date('2014-01-01 19:45:46')  AND  Date('2014-02-01 19:05:43')  ) ";
    

    感谢所有cmets和答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多