SQLite小于运算符问题
我正在为一个项目使用SQLite,SQLite小于运算符问题,sqlite,Sqlite,我正在为一个项目使用SQLite,=“2011年1月1日”) 上述查询中的(HolidayDate)符号工作正常 请帮助我。sqlite中没有日期时间数据类型 Sqlite只有4种类型: 整数 浮点数 字符串(存储为utf-8或utf-16并自动转换) 斑点 此外,sqlite是清单类型的,这意味着任何列都可以保存任何类型的值。声明的类型仅用于两种用途: 如果插入的值似乎是可转换的,则会将其转换为指定类型(并且它似乎根本不适用于使用sqlite\u bind\uu*方法绑定的值) 它以某种
SELECT HolidayDate
FROM Holidays
WHERE (HolidayDate >= '1/1/2011')
AND (HolidayDate <= '1/1/2012')
选择HolidayDate
度假
其中(HolidayDate>=“2011年1月1日”)
上述查询中的(HolidayDate)符号工作正常
请帮助我。sqlite中没有日期时间数据类型
Sqlite只有4种类型:
- 整数
- 浮点数
- 字符串(存储为utf-8或utf-16并自动转换)
- 斑点
此外,sqlite是清单类型的,这意味着任何列都可以保存任何类型的值。声明的类型仅用于两种用途:
- 如果插入的值似乎是可转换的,则会将其转换为指定类型(并且它似乎根本不适用于使用
sqlite\u bind\uu*
方法绑定的值)
- 它以某种方式提示索引器或优化器(我只知道当列未键入时,它在使用索引时遇到问题)
更糟糕的是,sqlite将默默地接受任何类型。如果它以“int”开头,它将解释为integeral类型;如果它包含“char”或“text”,它将解释为string;如果它是“real”、“double”或“number”,它将解释为浮点数;如果它是“blob”,它将解释为blob。在其他情况下,该列只是非类型化的,这对sqlite没有问题,因为类型化意味着什么
这意味着“2011年1月1日”只是一个字符串,当按基数排序时,格式为“mm/dd/yyyy”的日期和格式为“dd/mm/yyyyy”的日期都不会按日期排序(实际上是按基数排序)
如果您以ISO格式(“yyyy-mm-dd”)存储日期,则ASCIB电子排序将与日期排序兼容,您不会有任何问题。请尝试:
SELECT HolidayDate
FROM Holidays
WHERE HolidayDate >= date('2011-01-01')
AND HolidayDate <= date('2012-01-01')
选择HolidayDate
度假
其中HolidayDate>=日期('2011-01-01')
你说的“不工作”到底是什么意思。您是否收到错误?即使有满足上述条件的行,我也不会收到任何输出。没有错误。假日的定义是什么?表假日仅包含一列数据类型datetime。没有满足上述条件的行,因为唯一满足该条件的值是格式为“1/1/2”的行011something'和那些看起来不是有效日期。我正在以ISO格式存储日期。如何获取上述查询的输出。我可以使用>和<对于日期,使用
。Sqlite将它们作为字符串进行比较,但在ISO格式中,它与作为日期进行比较一致。只需确保您0-填充字段以进行修复d宽度,即始终使用01
,而不仅仅是1
。