我有一个带有timestamp列的表,存储在timestamp列中的值类似于
20180608T002304.507Z,20180608T001745.821Z,20180608T001628.170Z,20180608T001336.516Z
我想在“ YYYY-MM-dd ”格式中获得时间戳。
使用了strftime()函数,但没有使用
当我查询 strftime('%Y-%m-%d%H:%M',时间戳)获取 null
提前致谢
答案 0 :(得分:0)
这不是supported time string formats之一。更改值,使其包含适当的标点符号:
sqlite> SELECT date('20180608T002304.507Z');
sqlite> SELECT date('2018-06-08T00:23:04.507Z');
2018-06-08
答案 1 :(得分:0)
您的问题是strftime
以及所有SQLite日期函数都需要下面列出的特定格式。 20180608T002304.507Z不是其中一种格式,因此为null。
您有两种选择。
substr
功能,例如: -
substr(mytimestamp,1,4)||'-'||
substr(mytimestamp,5,2)||'-'||
substr(mytimestamp,7,2)||' ' ||
substr(mytimestamp,10,2)||':'||
substr(mytimestamp,12,2)
例如,以下内容: -
DROP TABLE IF EXISTS mytable;
CREATE TABLE IF NOT EXISTS mytable (mytimestamp);
INSERT INTO mytable VALUES('20180608T002304.507Z'),('20180608T001745.821Z'),('20180608T001628.170Z'),('20180608T001336.516Z');
SELECT
substr(mytimestamp,1,4)||'-'||
substr(mytimestamp,5,2)||'-'||
substr(mytimestamp,7,2)||' ' ||
substr(mytimestamp,10,2)||':'||
substr(mytimestamp,12,2)
FROM mytable;
导致: -
这可以使用基于以下内容的东西来完成: -
UPDATE mytable SET mytimestamp =
substr(mytimestamp,1,4)||'-'|| -- Year
substr(mytimestamp,5,2)||'-'|| -- Month
substr(mytimestamp,7,2)|| -- Day
substr(mytimestamp,9,1)|| -- T (or space)
substr(mytimestamp,10,2)||':'||
substr(mytimestamp,12,2)||':'||
substr(mytimestamp,14)
;
运行更新后,使用: -
SELECT strftime('%Y-%m-%d %H:%M', mytimestamp) FROM mytable;
导致: -
时间字符串时间字符串可以采用以下任何格式:
- YYYY-MM-DD
- YYYY-MM-DD HH:MM
- YYYY-MM-DD HH:MM:SS
- YYYY-MM-DD HH:MM:SS.SSS
- YYYY-MM-DDTHH:MM
- YYYY-MM-DDTHH:MM:SS
- YYYY-MM-DDTHH:MM:SS.SSS
- HH:MM
- HH:MM:SS
- HH:MM:SS.SSS
- 现在
- DDDDDDDDDD
醇>在格式5到7中," T"是一个分隔的文字字符 日期和时间,根据ISO-8601的要求。格式8到10表示 仅指定假定日期为2000-01-01的时间。格式11,字符串 ' now',被转换为从中获得的当前日期和时间 正在使用的sqlite3_vfs对象的xCurrentTime方法。现在' 日期和时间函数的参数总是返回完全相同 同一sqlite3_step()调用中多次调用的值。 使用通用协调时间(UTC)。格式12是朱利安日 数字表示为浮点值。
格式2到10可以可选地后跟一个时区 形式的指标" [+ - ] HH:MM"或只是" Z"。日期和时间 函数使用UTC或" zulu"内部时间,所以" Z"后缀是 无操作。任何非零" HH:MM"从指示中减去后缀 日期和时间,以计算祖鲁时间。例如,所有的 以下时间字符串是等效的:
- 2013-10-07 08:23:19.120
- 2013-10-07T08:23:19.120Z
- 2013-10-07 04:23:19.120-04:00
- 2456572.84952685
在格式4,7和10中,SS.SSS可以具有小数秒值 小数点后面的一个或多个数字。正好是三位数 在示例中显示,因为只有前三个数字 结果很重要,但输入字符串可以有更少或更多 超过三位数,日期/时间功能仍然可以运行 正确。同样,格式12显示有10位有效数字, 但日期/时间功能真的会接受尽可能多的 代表朱利安日数所必需的数字。