将julian日期列添加到SQLite表

时间:2010-12-23 18:37:33

标签: sqlite alter-table

这很简单,但我无法从ALTER TABLE的SQLite FAQ和插图中找到答案。

我有一个日期专栏,但为了找到时差,我需要使用朱利安日期,所以我觉得我不妨添加朱利安日期专栏,因为我会做很多事情。但我无法弄明白该怎么做。

我经历了一系列迭代,但我认为我没有点击ALTER TABLEINSERT INTO命令的SQLite哲学。谢谢!

2 个答案:

答案 0 :(得分:1)

Sqlite中没有DATE或TIME类型。你可以自由选择对你有意义的东西。如果它只是日志记录的时间戳或其他东西,STRING应该没问题。如果您要进行日期时间比较和数学(根据问题),INTEGER将是最好的。

This page讨论内置函数的使用。如果您使用INTEGER存储自纪元以来的秒数,则可以使用减法来查找时差。

答案 1 :(得分:1)

  

但我不知道如何永久   将列添加到表中   其他列的功能   表。这不常见吗?

您无法在SQLite表中添加计算列。但是你可以使用VIEW

来做到这一点
CREATE TABLE TableWithDates (
    ID INTEGER PRIMARY KEY,
    Iso8601 TEXT
);

CREATE VIEW ViewWithDates AS
    SELECT ID, Iso8601, JULIANDAY(Iso8601) AS Julian
    FROM TableWithDates;

sqlite> INSERT INTO TableWithDates VALUES (1, CURRENT_TIMESTAMP);
sqlite> SELECT * FROM TableWithDates;
1|2010-12-23 21:13:26
sqlite> SELECT * FROM ViewWithDates;
1|2010-12-23 21:13:26|2455554.3843287