SF.*_*SF. 11 sqlite unsigned types integer unix-timestamp
原始问题:unix时间戳的正确列格式是什么?
网络充满了混乱:一些帖子声称SQLite没有无符号类型 - 无论是什么,或者除了64位int类型(但有(反)示例调用UNSIGNED INTEGER).数据类型页面仅在bigint示例中提及它.它还声称有一个6字节的整数,但没有为它命名.似乎我尝试使用INTEGER将4字节签名的签名存储unix时间戳作为负数.我听说有些系统也会返回64位时间戳.OTOH我不太喜欢浪费4个字节来存储1个额外位(时间戳的最高位),即使我必须选择更大的数据格式,我宁愿选择6字节的数据格式.我甚至看过一篇声称SQLite unix时间戳是REAL类型的帖子...
完全问题:有人可以澄清一下这个烂摊子吗?
dan*_*n04 12
整数的大小
SQLite数据库中的所有列都是内部可变宽度的.的文件格式存储在整数1,2,3,4,6,或8字节,这取决于数多大,加在标题中指示的大小的一个字节.因此,总的来说,存储为整数的Unix日期将占用5个字节,直到2038-01-19和之后的7个字节.
从C API用户的角度来看,所有整数都是64位签名的.
列类型
是否将列声明为INTEGER,UNSIGNED INTEGER,BIGINT或其他任何内容都无关紧要. 任何带有"INT"的东西都具有整数亲和力. 并且,如上所述,所有整数都是64位的符号,但通常不会以这种方式存储.