sqlite strftime()返回带整数的null

fjnneemd  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(424)

我的表“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;

它工作的很好,但我不明白为什么我必须做所有这些当我使用整数,但当我使用文本,它直接工作。

vuktfyat

vuktfyat1#

你可以用 strftime() 但你必须加上 'unixepoch' 修饰语:

strftime('%Y', date / 1000, 'unixepoch')

所以你的 date / 1000 被识别为自 1970-01-01 .
起始日期和时间函数:
“unixepoch”修饰符(11)只有在紧跟dddd格式的时间字符串之后才起作用。这个修饰符会导致dddddd被解释为unix时间(自1970年以来的秒数),而不是通常的儒略日数。

相关问题