【问题标题】:sqlite date query is not working well in androidsqlite 日期查询在 android 中无法正常工作
【发布时间】:2013-08-05 15:44:45
【问题描述】:

您好,我需要进行查询,比较两个日期并选择在这两个日期之间创建的所有对象。

我的日期字段是文本类型。

我进行了一些测试,显然日期是以 YYYY-MM-DD 格式存储的。

我正在使用此代码进行查询:

return bd.query("Gasto", null , "Fecha_Creado between '"+fecha1+ "' and '"+fecha2+"'", null, null, null, "Fecha_Creado DESC", null);

这段代码用于检索日期并将它们传递给上一个函数

return bd.obtenerGastosVar(fecha.get(Calendar.YEAR)+"-"+(fecha.get(Calendar.MONTH)+1)+"-1", 
            fecha.get(Calendar.YEAR)+"-"+(fecha.get(Calendar.MONTH)+1)+"-"+fecha.getActualMaximum(Calendar.DAY_OF_MONTH), ordenadoPor);

所以最终结果应该是一个查询:
select * from gasto where date1 和 date2 之间的日期 所以那是 select * from gasto where date between 2013-8-1 and 2013-8-31

所以,该查询应该与之前的 YYYY-MM-DD 进行日期比较。

我期待在这两个日期之间创建的对象,但它不起作用。一个小时前它还在工作

我做了一些有趣的事情并用于查询日期,DD-MM-YYYY 格式。这显然是有效的,但我担心使用这种格式进行查询会带来不可靠的结果。

那么我怎样才能解决这个问题并仍然获得可靠的结果?

感谢您的帮助

【问题讨论】:

  • "我的日期字段是文本类型。" - 这是你的第一个问题。将日期存储为日期,而不是文本。
  • 好吧,我在 sqlite 中使用了日期,但给了我更多问题。我切换到这些日期的文本,除此查询外,一切正常。奇怪的是,使用不同的格式会产生不错的结果,但我认为它们并不准确

标签: android date sqlite


【解决方案1】:

显然,为了让我能够比较日期,取得好的结果,日期必须有 2 位数的月份和日期

例如 2013-04-09 或 2013-11-25

没有一位数的月份或日期的日期

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    相关资源
    最近更新 更多