我的SQLite
数据库中的每条记录都包含一个字段,其中包含以'yyyy-MM-dd HH:mm:ss'
格式存储为string
的Date
。
请问是否可以查询数据库以获取包含最近日期的记录?
我的SQLite
数据库中的每条记录都包含一个字段,其中包含以'yyyy-MM-dd HH:mm:ss'
格式存储为string
的Date
。
请问是否可以查询数据库以获取包含最近日期的记录?
你可以像这样做
SELECT * FROM Table ORDER BY date(dateColumn) DESC Limit 1
datetime()
而不是date()
。 - eliocs对我来说,我是这样查询解决我的问题的。
select * from Table order by datetime(datetimeColumn) DESC LIMIT 1
因为我将其存储为日期时间而不是日期列
当你确认文本字段的格式为yyyy-MM-dd HH:mm:ss
(例如:2017-01-02 16:02:55
)时,仅需执行以下命令即可:
SELECT * FROM Table ORDER BY dateColumn DESC Limit 1
无需使用任何额外的日期函数!
您需要将其转换为Unix时间戳,然后进行比较:
SELECT * FROM data ORDER BY strftime('%s', date_column) DESC
但是如果有很多行,这种方式可能非常慢。 更好的方法是默认存储Unix时间戳,并为该列创建索引。
sent_date_time
转换为yyyy-MM-dd
格式,然后按日期排序:1) substr(sent_date_time,7,4)||"-"||substr(sent_date_time,1,2)||"-"||substr(sent_date_time,4,2) as date
2) order by date desc
SELECT * FROM 'Repair' ORDER BY "Date" DESC;
我认为SQLite会自己进行类型转换,但当我尝试手动 'cast' 日期列时却不起作用,也没有出现错误消息。
你也可以使用以下查询
"SELECT * FROM Table ORDER BY strftime('%Y-%m-%d %H:%M:%S'," + dateColumn + ") DESC Limit 1"
((strftime('%s', 'now') - strftime('%S', 'now') + strftime('%f', 'now')) * 1000)
(请参见https://dev59.com/km025IYBdhLWcg3whWZm#20478329)
然后就可以轻松地进行排序、比较等操作了。
这个方法适用于日期和时间
SELECT *
FROM Table
ORDER BY
julianday(dateColumn)
DESC Limit 1