gpt4 book ai didi

date - Typeof 日期字段在 sqlite3 中显示文本亲和性

转载 作者:行者123 更新时间:2023-12-03 17:04:12 25 4
gpt4 key购买 nike

参加这个 sqlite3 互动 session :

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;

最佳答案

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

SQLite 没有原生的日期数据类型。为了允许 built-in date functions 处理日期,您必须将它们存储为 yyyy-mm-dd 字符串或数字(儒略日数字,或自 Unix 纪元以来的秒数)。

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

关于date - Typeof 日期字段在 sqlite3 中显示文本亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13554513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com