Dam*_*mon 6 sqlite string comparison datetime
我在SQLite工作,所以我将日期存储为文本.
YYYY-MM-DD hh:mm:ss
据我所知,我应该能够对它们进行排序或者将它们相互比较,就像它们不担心日期函数一样,因为任何递增都是向右开始并向左移动,就像数字一样,并且所有值都是数字,并且非数字字符总是标准化的,我正在使用24小时制.
我一直在网上看到人们提到如何将日期作为文本转换进行任何比较,但我不明白为什么他们不会只是按原样工作,只要它们处于最大 - 最小的顺序.显然我不能做数学,但Select DateTime From Table where DateTime > 2010-04-21 15:34:55应该完全可靠,对吧?
有没有我想不到的例外?
这很好用.SQLite没有像许多其他数据库那样的实际DATE(或DATETIME)数据类型.您可以选择以正确排序的字符串格式(YYYY-MM-DD或YYYY-MM-DD hh:mm:ss)存储日期,或者将日期转换为数字并存储.
如果您使用字符串格式,那么您当然必须包含引号:
SELECT DateTime FROM Table WHERE DateTime > '2010-04-21 15:34:55'
Run Code Online (Sandbox Code Playgroud)
在数据库中存储日期时,\xe2\x80\x99 看到大量提及转换的原因是大多数数据库引擎都有 \xe2\x80\x98native\xe2\x80\x99 日期/时间数据类型。SQLite 不\xe2\x80\x99t。它建议您将日期存储为字符串或儒略日期浮点值。
\n\n此外,其他一些数据库具有相当晦涩的日期到字符串函数(我\xe2\x80\x99m看着你,SQL Server),\xe2\x80\x99s很难弄清楚如何获取可排序的日期字符串。SQLite\xe2\x80\x99s 默认日期格式 (YYYY-MM-DD HH:NN:SS) 完全可排序且易于阅读。
\n\n只要您使用正确的格式(就像您所呈现的那样),在比较或整理 \xe2\x80\x94 时,您\xe2\x80\x99 就可以很好地处理文本日期。
\n\n事实上,您甚至可以使用 SQLite 的日期和时间函数进行数学计算;它们\xe2\x80\x99 相当非正统,但却非常灵活。
\n