Добавить юлианский столбец даты в таблицу SQLite - PullRequest
1 голос
/ 23 декабря 2010

Это легко, но я не могу понять это из FAQ по SQLite и виньетки для ALTER TABLE.

У меня есть столбец с датой, но чтобы найти разницу во времени, мне нужно использовать юлианские даты, поэтому я чувствую, что с таким же успехом могу добавить колонку с юлианскими датами, потому что я буду делать это много. Но я не могу понять, как это сделать.

Я прошел кучу итераций, но не думаю, что я придерживаюсь философии SQLite команд ALTER TABLE и INSERT INTO. Спасибо!

Ответы [ 2 ]

1 голос
/ 24 декабря 2010

Но я понятия не имею, как окончательно добавить столбец в таблицу, который является функцией других столбцов в этой таблице.Это не распространенное использование?

Вы не можете добавить вычисляемый столбец в таблицу 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
1 голос
/ 23 декабря 2010

В Sqlite нет типов ДАТА или ВРЕМЯ.Вы можете выбрать, что имеет для вас смысл.Если это просто временные метки для регистрации или что-то, STRING должно быть в порядке.Если вы собираетесь проводить сравнение даты и времени и математические вычисления (которые вы отвечаете на вопрос), INTEGER будет лучшим вариантом.

На этой странице не используются встроенные функции.Если вы используете INTEGER для хранения секунд с начала эпохи, вы можете использовать вычитание, чтобы найти разницу во времени.

...