在我的项目中,我将日期存储在日期添加的文件中,如下所示。
01-07-14 12:00
02-07-14 12:00
25-06-14 13.00
当我查询最短日期时:
Select dateadded from dgadata order by dateadded asc limit 1
那就是返回01-07-14 12:00
,即使我写Select min(dateadded) from dgadata
,输出也是一样的。但这里的最短日期是26-06-14 13.00
在我写的最长日期
Select dateadded from dgadata order by dateadded desc limit 1
此处结果为25-06-14 13.00
,但此处的最大日期为02-07-14 12:00
我认为我的查询很好,我不知道为什么我会得到错误的结果。
答案 0 :(得分:1)
SQLite没有专门的日期时间types,但确实有few datetime functions。遵循这些函数所理解的字符串表示格式(实际上只有格式1-10)(将值存储为字符串),然后您可以使用它们,加上字符串上的词典比较将匹配日期时间比较(只要您没有&#39) ; t尝试将日期与时间或日期时间进行比较,无论如何都不会产生任何意义。
根据您使用的语言,您甚至可以获得automatic conversion。 (这不适用于SQL语句中的比较,例如示例,但会让您的生活更轻松。)
答案 1 :(得分:0)
原因是因为比较是在存储的字符串中执行的。我认为this may help。
答案 2 :(得分:0)
对于我所看到的,似乎您已将dateadded字段定义为TEXT,您应该存储时间戳(整数)值而不是文本值,这样就可以很容易地对它们进行排序。
SQLite does not have a storage class set aside for storing dates and/or times. Instead,
the built-in Date And Time Functions of SQLite are capable of storing dates and times
as TEXT, REAL, or INTEGER values:
TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").
REAL as Julian day numbers, the number of days since noon in Greenwich on November 24,
4714 B.C. according to the proleptic Gregorian calendar.
INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.
Applications can chose to store dates and times in any of these formats and freely
convert between formats using the built-in date and time functions.`
另一种可能的解决方案是将您的日期存储为YYYMMMDDHHMMSS,这样您的订单也将起作用。