Typeof Date字段在sqlite3中显示文本相关性

时间:2012-11-25 19:18:11

标签: date sqlite

参加这个sqlite3互动会议:

sqlite> create table d(t date);
sqlite> insert into d values('1913-12-23');
sqlite> select t,typeof(t) from d;
1913-12-23|text
sqlite>

为什么日期字段显示为文本类型?存储空间是否会更小,如果是数字,查询会更快?

Sqlite3 datatype documentation表示根据§2.2中的表格,日期列的亲和力是数字。我猜想将日期字段存储为数字值而不是文本将占用更少的空间,因此这将是理想的。我很可能还没有很好地掌握sqlite,所以我的担忧可能无效。

轻松复制/粘贴:

create table d(t date);
insert into d values('1913-12-23');
select t,typeof(t) from d;

1 个答案:

答案 0 :(得分:3)

typeof('1913-12-23')返回text的原因是'1913-12-23'是一个字符串,并以字符串形式存储在表中。 只有当转换无损时,类型亲和力才会发挥作用;例如,值'123456'将被转换为数字。

SQLite没有本机日期数据类型。 要允许日期由built-in date functions处理,您必须将它们存储为yyyy-mm-dd字符串或数字(Julian日数或自Unix时代以来的秒数)。

整数占用的存储空间少于字符串,因此如果数据库的瓶颈是I / O,查询会更快,这很可能。