Каковы sqlite-эквиваленты INTERVAL
и UTC_TIMESTAMP
? Например, представьте, что вы «переносите» следующий SQL из MySQL в sqlite:
SELECT mumble
FROM blah
WHERE blah.heart_beat_time > utc_timestamp() - INTERVAL 600 SECOND;
Каковы sqlite-эквиваленты INTERVAL
и UTC_TIMESTAMP
? Например, представьте, что вы «переносите» следующий SQL из MySQL в sqlite:
SELECT mumble
FROM blah
WHERE blah.heart_beat_time > utc_timestamp() - INTERVAL 600 SECOND;
datetime('now')
предоставляет вам текущую дату и время в формате UTC, поэтому SQLite эквивалентен MySQL 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.
datetime('now', '-600 seconds')
- person Jacob Gabrielson; 26.09.2011
В sqlite нет встроенной поддержки временных меток.
Я использовал простые старые (64-битные) целые числа в качестве временных меток, представляющих микро- или миллисекунды с начала эпохи.
Поэтому, предполагая миллисекунды:
SELECT mumble
FROM blah
WHERE blah.heart_beat_time_millis > ? - 600*1000;
и привязать системное время в миллисекундах к первому параметру.
в SQLite есть LOCAL_TIMESTAMP, но это GMT.