【问题标题】:Getting the MAX date in SQLite在 SQLite 中获取 MAX 日期
【发布时间】:2012-08-09 23:00:29
【问题描述】:

我使用 SQLite 作为我的 Android 应用程序的数据存储。我创建了一个包含日期时间类型列的表。当我插入记录或选择语句时,我使用日期格式 dd.MM.yyyy (10.08.2012)。

现在,我在获取具有最新 / MAX 日期的行时遇到问题。我曾尝试使用 MAX(date_column) 语句,但它返回错误的日期。我的表中有以下日期,它返回 31.07.2012 而不是 04.08.2012。有谁知道我做错了什么?

04.08.2012
03.08.2012
02.08.2012
01.08.2012
31.07.2012
30.07.2012

下面是部分代码:

String selection = "measurementDate = (SELECT MAX(measurementDate) FROM Measurements)";
Cursor cursor = database.query("Measurements", allColumns, selection, null, null, null, null);
cursor.moveToFirst();
...

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    这可能是由于对存储的字符串进行比较而不是将其视为日期。

    您可以以不同的方式存储字符串,YYYYMMDD,这样应该可以正确比较它们,或者,如果您可以修改表格,则将日期存储为毫秒并在需要时格式化回字符串。

    This might help

    【讨论】:

    • Tnx,你是对的!所有日期都以 mm.DD.yyyy 格式放置,比较失败。奇怪的是 sqlite.org 说 sqlite 中没有 DateTime 数据类型,但是当我创建我的表时,我使用了该数据类型并且 create 语句没有失败。 :S 无论如何,我切换到整数数据类型,并将所有日期都设置为毫秒。现在可以了!
    【解决方案2】:

    会不会是因为31?
    试试看是否有帮助:

    SELECT measurementDate FROM Measurements ORDER BY measurementDate desc LIMIT 1
    

    【讨论】:

    • 这没有帮助!看我上面的回复
    猜你喜欢
    • 2015-12-25
    • 2020-10-12
    • 2017-06-10
    • 1970-01-01
    • 2022-07-04
    • 2013-07-07
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    相关资源
    最近更新 更多