原来的问题:
unix时间戳的正确列格式是什么?
unix时间戳的正确列格式是什么?
网络充满了混乱:一些帖子声称sqlite没有无符号类型 – 无论是什么,或者除了64位int类型(但是有(反)示例调用UNSIGNED INTEGER).数据类型页面仅在一个bigint示例中提到它.它还声称有一个6字节的整数,但没有给它一个名称.看来,我尝试使用INTEGER是4字节签名的存储unix时间戳作为负数.我听说有些系统返回64位时间戳. OTOH我不太喜欢浪费4个字节来存储1个额外的位(时间戳的顶部),即使我必须选择更大的数据格式,我宁愿去6字节.我甚至看到一个声明sqlite unix时间戳的帖子是REAL …
完成问题:
有人可以澄清一下吗?
一个整数的大小
原文链接:https://www.f2er.com/sqlite/197573.htmlsqlite数据库中的所有列都是内部可变宽度的. file format以1,2,3,4,6或8个字节存储整数,取决于数字大小,标题中加上一个字节来指示大小.因此,总共存储为整数的Unix日期将占用5个字节,直到2038-01-19和7个字节为止.
从C API的用户的角度来看,所有的整数都是64位的.
列类型
您是否将列列为INTEGER,UNSIGNED INTEGER,BIGINT或其他内容无关紧要. Anything with “INT” in it has integer affinity.而且,如上所述,所有整数都是64位的,但通常不是这样存储的.