Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlite中的日期_Sql_Sqlite_Create Table - Fatal编程技术网

sqlite中的日期

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,

我在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,  
    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,是吗?:)