SQLite strftime() 返回带有整数的空值
SQLite strftime() returning null with integers
我的 table“作品”中有一个列名为“date”的日期,以 Unix 格式存储为整数(示例:1548263300000)。我只想检索年份。当我这样做时:
SELECT strftime('%Y ',date) as year
FROM productions
它 returns 没有。
当我将类型更改为 TEXT 到我的 table 并且我以字符串格式存储日期(例如 2020-05-01 )时,与 sql returns 我一样“ 2020" 这是正确的,也是我正在寻找的。
为什么 strftime() 不适用于整数,因为 SQLite documentation 说您可以使用 TEXT、INTEGER 和 REAL 作为日期?如何使用带整数的日期函数?
补充信息:
在本教程中,他们还将 strftime 与整数一起使用,这似乎对他们有用,所以我从中了解到,无论您使用什么类型(文本、整数、实数),这些函数都可用:link
当我使用:
SELECT strftime('%Y',DATETIME(ROUND(date/ 1000), 'unixepoch'))
FROM productions;
它工作正常,但我不明白为什么当我使用整数时我必须这样做,但是当我使用文本时,它直接工作。
您可以使用 strftime()
但您必须添加 'unixepoch'
修饰符:
strftime('%Y', date / 1000, 'unixepoch')
因此您的 date / 1000
被识别为自 1970-01-01
.
以来的秒数
The "unixepoch" modifier (11) only works if it immediately follows a
timestring in the DDDDDDDDDD format. This modifier causes the
DDDDDDDDDD to be interpreted not as a Julian day number as it normally
would be, but as Unix Time - the number of seconds since 1970.
我的 table“作品”中有一个列名为“date”的日期,以 Unix 格式存储为整数(示例:1548263300000)。我只想检索年份。当我这样做时:
SELECT strftime('%Y ',date) as year
FROM productions
它 returns 没有。
当我将类型更改为 TEXT 到我的 table 并且我以字符串格式存储日期(例如 2020-05-01 )时,与 sql returns 我一样“ 2020" 这是正确的,也是我正在寻找的。
为什么 strftime() 不适用于整数,因为 SQLite documentation 说您可以使用 TEXT、INTEGER 和 REAL 作为日期?如何使用带整数的日期函数?
补充信息:
在本教程中,他们还将 strftime 与整数一起使用,这似乎对他们有用,所以我从中了解到,无论您使用什么类型(文本、整数、实数),这些函数都可用:link
当我使用:
SELECT strftime('%Y',DATETIME(ROUND(date/ 1000), 'unixepoch'))
FROM productions;
它工作正常,但我不明白为什么当我使用整数时我必须这样做,但是当我使用文本时,它直接工作。
您可以使用 strftime()
但您必须添加 'unixepoch'
修饰符:
strftime('%Y', date / 1000, 'unixepoch')
因此您的 date / 1000
被识别为自 1970-01-01
.
The "unixepoch" modifier (11) only works if it immediately follows a timestring in the DDDDDDDDDD format. This modifier causes the DDDDDDDDDD to be interpreted not as a Julian day number as it normally would be, but as Unix Time - the number of seconds since 1970.