SQL在日期之间选择

Zom*_*ian 66 sql sqlite

我正在运行sqlite来为销售报告选择两个范围之间的数据.要从两个日期之间选择数据,请使用以下语句:

SELECT * FROM test WHERE date BETWEEN "11/1/2011" AND "11/8/2011";
Run Code Online (Sandbox Code Playgroud)

该声明甚至包括那些超出标准的日期.您看到输入的日期格式与我返回的格式相同.我不确定什么是错的,但感谢我能找到的任何帮助.谢谢!

Eri*_*lje 90

SQLLite要求日期YYYY-MM-DD格式.由于数据库中的数据和查询中的字符串不是该格式,因此可能会将"日期"视为字符串.

  • 那是本月的第10个和第20个.试试'BETWEEN'2011-11-01''''2011-11-02'`. (31认同)
  • SQLite 将日期视为字符串,无论其格式如何。使用 YYYY-MM-DD 有效的原因是文本排序顺序与时间排序顺序相同。任何在较小字段之前具有较大字段的填充数字格式都可以使用。 (2认同)

Utk*_*rım 32

将数据更改为格式以使用sqlite日期时间格式.

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD

SELECT * FROM test WHERE date BETWEEN '2011-01-11' AND '2011-08-11'
Run Code Online (Sandbox Code Playgroud)


AFD*_*AFD 13

在SQLite中选择日期的另一种方法是使用强大的strftime函数:

SELECT * FROM test WHERE strftime('%Y-%m-%d', date) BETWEEN "11-01-2011" AND "11-08-2011"
Run Code Online (Sandbox Code Playgroud)

根据https://sqlite.org/lang_datefunc.html,这些是等效的:

date(...)

strftime('%Y-%m-%d', ...)
Run Code Online (Sandbox Code Playgroud)

但如果你想要更多的选择,你就拥有它.


小智 5

SELECT *
FROM TableName
WHERE julianday(substr(date,7)||'-'||substr(date,4,2)||'-'||substr(date,1,2)) BETWEEN julianday('2011-01-11') AND julianday('2011-08-11')
Run Code Online (Sandbox Code Playgroud)

请注意,我使用的格式:dd/mm/yyyy. 如果使用d/m/yyyy,请更改substr()