Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite中的Unix时间戳或IS0-8601日期字符串_Sqlite_Date_Datetime - Fatal编程技术网

SQLite中的Unix时间戳或IS0-8601日期字符串

SQLite中的Unix时间戳或IS0-8601日期字符串,sqlite,date,datetime,Sqlite,Date,Datetime,SQLite不支持。因此,datetime可以在数据库中表示为unix时间戳,例如整数、自1970年1月1日起的秒数或IS0-8601字符串 YYYY-MM-DD HH:MM:SS 当datetime存储为unix时间戳时,我们可以执行如下查询: select * from table where c1 < datetime(1452598502, 'unixepoch', 'localtime') 像upper这样的查询仍然正确执行,字符串上的词典比较将匹配日期时间比较 select

SQLite不支持。因此,datetime可以在数据库中表示为unix时间戳,例如整数、自1970年1月1日起的秒数或IS0-8601字符串

YYYY-MM-DD HH:MM:SS

当datetime存储为unix时间戳时,我们可以执行如下查询:

 select * from table where c1 < datetime(1452598502, 'unixepoch', 'localtime')
像upper这样的查询仍然正确执行,字符串上的词典比较将匹配日期时间比较

select * from table where c1 < '2016-01-10 15:43:52'

更进一步,unix时间戳的最大值为2038年,之后溢出。YYYY的最长日期为9999。两者都有一个最大值。彼此之间有什么优势吗?我只是不喜欢一个胜过另一个。也许我更喜欢datetime作为字符串YYYY-MM-DD HH:MM:ss,因为它的最大值大于unixtimestamp。

Unix时间戳仅在2038年溢出,如果它们存储为32位值。SQLite支持64位值


单个数字所需的存储空间比字符串少,但这仅在您有大量记录时才重要。您必须平衡这一点和字符串的易调试性。

Link提到整数可以存储在1、2、3、4、6或8字节中,具体取决于值的大小。你说得对,谢谢。您提到的另一点是,如果存储为字符串,则很容易看到datetime—您不必转换它。将读取的整数从db存储回编程语言变量时,必须小心。所以您不存储在例如c int中。。可能会抛出异常,但尚未对其进行测试
select * from table where c1 < '2016-01-10 15:43:52'