1

我正在检查Graphserver的代码,并且有一些 SQLite 命令旨在查找两个字段的最小值和最大值:

select min(start_date), max(end_date) from calendar

start_date 和 end_date 的格式类似于 YYYYMMDD,这看起来不是 SQLite 在http://www.sqlite.org/lang_datefunc.html中识别的格式之一。此处记录的 min() 和 max() http://www.sqlite.org/lang_corefunc.html表示使用二进制整理函数进行比较。这里(http://www.sqlite.org/datatype3.html#collat ​​ion )它说 memcmp() 用于比较。所以它只是从字符串的开头逐字节比较ascii数字?我不确定 memcmp 是做什么的。所以 20120506 应该小于 20120507,因为 6 在 ascii 中是 54,7 是 55 是 ascii,所以 20120507 更大?

4

1 回答 1

0

您的日期以 SQLite 日期和时间函数无法使用的格式存储这一事实与minandmax函数将如何对其进行操作无关。

如果您的日期被 SQLite 视为字符串,那么您的问题的答案是肯定的。如果您将日期存储为YYYYMMDD,则根据您的列定义,您的日期实际上可能被视为数字,因此可以进行比较。

有关这方面的更多信息,请阅读数据类型,尤其是类型亲和性

于 2012-07-29T13:45:38.047 回答