Каковы sqlite эквиваленты INTERVAL и UTC_TIMESTAMP в MySQL? - PullRequest
6 голосов
/ 09 июля 2009

Каковы sqlite эквиваленты INTERVAL и UTC_TIMESTAMP?Например, представьте, что вы «переносили» следующий SQL из MySQL в sqlite:

SELECT mumble
  FROM blah
 WHERE blah.heart_beat_time > utc_timestamp() - INTERVAL 600 SECOND;

Ответы [ 3 ]

12 голосов
/ 25 сентября 2011

datetime('now') предоставляет вам текущую дату и время в формате UTC, так же как SQLite эквивалент MySQL's UTC_TIMESTAMP().

Также может быть полезно знать, что при заданной строке даты и времени datetime может преобразовать ее из местного времени в UTC, используя datetime('2011-09-25 18:18', 'utc').

Вы также можете использовать функцию datetime() для применения таких модификаторов, как «+1 день», «начало месяца», «- 10 лет» и многие другие.

Следовательно, ваш пример будет выглядеть в SQLite следующим образом:

SELECT mumble
  FROM blah
 WHERE blah.heart_beat_time > datetime('now', '-600 seconds');

Вы можете найти больше модификаторов на странице Функции даты и времени SQLite .

2 голосов
/ 09 июля 2009

В sqlite нет встроенной поддержки отметок времени.

Я использовал простые старые (64-битные) целые числа в качестве меток времени, представляющих микро- или миллисекунды с начала эпохи.

Следовательно, предполагая миллисекунды:

SELECT mumble
  FROM blah
WHERE blah.heart_beat_time_millis > ? - 600*1000;

и привязать системное время в миллисекундах к первому параметру.

1 голос
/ 05 сентября 2009

в SQLite есть LOCAL_TIMESTAMP, но это GMT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...