gpt4 book ai didi

sqlite - 在Web SQL中存储DateTime值

转载 作者:行者123 更新时间:2023-12-03 18:37:09 26 4
gpt4 key购买 nike

我对Web SQL(SQLite?)中的DateTime字段类型感到困惑。

我应该将日期/时间值存储为以毫秒为单位的getTime()还是YYYY-MM-DD HH:MM:SS:SSS字符串?

如果以毫秒为单位存储,我应该使用哪种字段类型?

最佳答案

通常,我会使用ISO 8601格式和text列来保存它们。 SQLite没有任何本地时间类型,但是其本地date and time handling functions可与ISO 8601格式一起使用:


所有五个日期和时间函数均以时间字符串作为参数。时间字符串后跟零个或多个修饰符。 strftime()函数还将格式字符串作为其第一个参数。

日期和时间函数使用IS0-8601日期和时间格式的子集。 date()函数以以下格式返回日期:YYYY-MM-DD。 time()函数将时间返回为HH:MM:SS。 datetime()函数返回“ YYYY-MM-DD HH:MM:SS”。


因此,如果您将需要在数据库中操作时间戳(可能迟早需要),则需要使用YYYY-MM-DD HH:MM:SS字符串。

如果您不打算在数据库内部操纵时间戳(除了简单的比较之外),那么可以很容易地使用秒-自纪元整数。还要注意,有时您可以本地使用seconds-since-epoch值:


“ unixepoch”修饰符(11)仅在紧随DDDDDDDDDD格式的时间字符串之后才起作用。此修饰符使DDDDDDDDDD不再像通常那样解释为儒略日数,而是解释为Unix时间-自1970年以来的秒数。如果“ unixepoch”修饰符不遵循DDDDDDDDDD形式的时间字符串,则该字符串表示自1970年以来的秒数,或者如果其他修饰符将“ unixepoch”修饰符与先前的DDDDDDDDDD分开,则该行为未定义。由于使用64位整数的实现施加的精度限制,“ unixepoch”修饰符仅适用于介于0000-01-01 00:00:00和5352-11-01 10:52:47之间的日期( -62167219200至10675199167)。


所以你可以说:

SELECT datetime(1092941466, 'unixepoch');


并取回 '2004-08-19 18:51:06'。尽管指定 'unixepoch'修饰符有点麻烦,但是当您不可避免地忘记它时,会引起一些有趣的事情:

-- 1333482187 is 2012-04-03 19:43:07
sqlite> select strftime('%m', 1333482187, 'unixepoch');
04
sqlite> select strftime('%m', 1333482187);
43


像往常一样,真正的答案取决于它,但是ISO 8601字符串可能是最好的选择。

关于sqlite - 在Web SQL中存储DateTime值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18244979/

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