我来自非数据库背景。我已经创建了一个带有字段数据类型text的表。

dataF TEXT

插入:
已插入三条具有以下值的记录:
'842-2-4'
'842-2-5'
'842-2-6'

选择:
正在尝试根据日期获取记录。
... where dateF between '842-2-4' and '842-2-10'

它失败了。
鉴于,
... where dateF between '842-2-4' and '842-2-8'

检索所有3条记录。
我做错什么了?为什么第一次失败?
请建议。

最佳答案

比较字符串时,将从左到右比较值…
因为一个字符串比另一个短,所以你可以比较一下…

'842-2-4'
'842-2-1'

好吧,没有什么是>= '842-2-4'<= '842-2-1'
因为'842-2-1'先于'842-2-4'
所以,'842-2-10'也在'842-2-4'之前。
正如'Squiggled''Squiggly'之前
'xxx-y-az'出现在'xxx-y-z'之前时
要想随心所欲地进行比较,请确保所有日期都用0填充。
BETWEEN '0842-02-04' AND '0842-02-10'

但是,只有在您也填充了表中的值之后,这才有效。
编辑:
另外,请注意,这假设您的格式是YYYY-MM-DD。当字符串从左到右进行比较时,必须在左侧具有最高的幅值值。
(这意味着您不能使用YYYY-DD-MM,并且仍然让本机字符串比较按照您希望的方式进行。)

08-27 20:35