我的表“productions”中有一个列名为“date”的日期,它以unix存储为整数(例如:1548263300000)。我只想找回那一年。当我这样做时:
SELECT strftime('%Y ',date) as year
FROM productions
它返回null。
当我将类型改为文本并将日期存储为字符串格式(例如2020-05-01)时,相同的sql返回“2020”,这是正确的,也是我要查找的。
为什么strftime()不能处理整数,因为sqlite文档说可以处理日期的文本、整数和实数?如何使用带整数的日期函数?
额外信息:
在本教程中,它们还使用strftime和整数,而且似乎对它们有效,因此我从中了解到,无论使用什么类型(text、int、real):link,函数都是可用的
当我使用:
SELECT strftime('%Y',DATETIME(ROUND(date/ 1000), 'unixepoch'))
FROM productions;
它工作的很好,但我不明白为什么我必须做所有这些当我使用整数,但当我使用文本,它直接工作。
1条答案
按热度按时间vuktfyat1#
你可以用
strftime()
但你必须加上'unixepoch'
修饰语:所以你的
date / 1000
被识别为自1970-01-01
.起始日期和时间函数:
“unixepoch”修饰符(11)只有在紧跟dddd格式的时间字符串之后才起作用。这个修饰符会导致dddddd被解释为unix时间(自1970年以来的秒数),而不是通常的儒略日数。