2010-12-23 94 views
1

这很容易,但我无法从SQLite常见问题和ALTER TABLE的小插图中找到它。将julian日期列添加到SQLite表

我有一个日期列,但要找到一个时间差,我需要使用朱利安日期,所以我觉得我不妨添加一个朱利安日期列,因为我会做很多。但我无法弄清楚如何去做。

我已经经历了一堆迭代,但我不认为我点击了ALTER TABLEINSERT INTO命令的SQLite原理。谢谢!

回答

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 
+0

谢谢!我在书中看到了VIEW,但没有意识到这是唯一的选择(添加一列看起来很基本)。这是可扩展的吗?我有400万行。应该通过添加表,放下桌面环?这看起来像是36列的麻烦。 – 2010-12-23 21:21:33

1

Sqlite中没有DATE或TIME类型。你可以自由选择对你有意义的事情。如果只是记录日志的时间戳,STRING应该没问题。如果你打算做日期时间比较和数学(你根据问题),INTEGER会是最好的。

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

+0

我很满意SQLite中的日期和时间函数。我的书解释得很好。但是我不知道如何永久性地将一列添加到表中,该表是该表中其他列的函数。这不是常见的用法吗? – 2010-12-23 20:15:33