sqlite中的日期
我在SQLite3中有一个数据库,我想在其中根据最近日期(DESC)显示信息 这就是我的SQL:sqlite中的日期,sql,sqlite,create-table,Sql,Sqlite,Create Table,我在SQLite3中有一个数据库,我想在其中根据最近日期(DESC)显示信息 这就是我的SQL: CREATE TABLE IF NOT EXISTS news( id INTEGER PRIMARY KEY AUTOINCREMENT, userid INTEGER, title TEXT NOT NULL, photo TEXT NOT NULL, datePosted INTEGER, article TEXT NOT NULL,
CREATE TABLE IF NOT EXISTS news(
id INTEGER PRIMARY KEY AUTOINCREMENT,
userid INTEGER,
title TEXT NOT NULL,
photo TEXT NOT NULL,
datePosted INTEGER,
article TEXT NOT NULL,
FOREIGN KEY(userid) REFERENCES users(id)
);
我认为你必须使用日期类型的日期,但你也可以使用整数和文本。。。我应该用什么?我只想手动以这种格式插入一个日期:“dd/mm/yyy”,然后按日期排序,严格按天、月和年排序
查询:
INSERT INTO news(userid, title, photo, datePosted, article)
VALUES(1, "a string", "a string", "30/11/2020", "a string");
INSERT INTO news(userid, title, photo, datePosted, article)
VALUES(2, "a string", "a string", "07/11/2020", "a string");
INSERT INTO news(userid, title, photo, datePosted, article)
VALUES(1, "a string", "a string", "09/12/2020", "a string");
INSERT INTO news(userid, title, photo, datePosted, article)
VALUES(2, "a string", "a string", "01/12/2020", "a string");
INSERT INTO news(userid, title, photo, datePosted, article)
VALUES(1, "a string", "a string", "05/12/2020", "a string");
我试过这个:
SELECT * FROM news
ORDER BY news.datePosted DESC;
SQLite中没有
Date
数据类型。您可以在此处找到有关SQLite数据类型的所有信息:。
您可以将日期存储为
INTEGER
(unix时间戳)、REAL
数字(朱利安日数)或TEXT
如果选择
INTEGER
或REAL
,则日期是可比较的,只需将其格式化为可读格式即可。如果选择
TEXT
数据类型,则使用格式YYYY-MM-DD
,这是SQLite唯一有效的文本日期格式,因为任何其他格式都不可比较,必须使用字符串函数使其具有可比性,或者在需要时重新格式化。在您的情况下,如果以
DD/MM/YYYY
格式存储日期,则无法直接对日期进行排序,因为文本列的排序是按字母顺序排列的,因此,您需要使用字符串函数重新排列日期的3个部分,以获得可比较的格式YYYY-MM-DD
,然后应用排序。我尝试了整数的两种格式,但第一行(30/11/2020)被认为是最近的一行,它不仅是日期,也不是月份。Idk why…@DanielCalota由于比较是按字母顺序进行的,因此它不能与dd/mm/yyyy格式一起使用。这就是我在回答中提到的。字符串30/11/2020
被认为大于09/12/2020
。我的意思是,我已经更改了此格式的所有行-yyy@DanielCalota您应该更改为以下格式:YYYY-MM-dd您通过我的问题获得了100k,是吗?:)