字符串上的SQLite min()和max()(memcmp比较)

时间:2012-07-27 09:10:50

标签: sqlite

我正在检查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#collation)它表示memcmp()用于比较。那么它只是从ascii数字的字符串开头逐字节比较?我不确定memcmp会做什么。因此假设20120506小于20120507,而ascii中6为54,ascii为7,则20120507更大?

1 个答案:

答案 0 :(得分:0)

您的日期以SQLite日期和时间函数无法使用的格式存储,这与minmax函数对它们的操作方式无关。

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

有关详情,请参阅data types,更具体地说,请参阅type affinity