MySQL的INTERVAL和UTC_TIMESTAMP的sqlite等价物是什么?

时间:2009-07-08 23:59:17

标签: mysql sqlite

INTERVALUTC_TIMESTAMP的sqlite等价物是什么?例如,假设您将以下SQL从MySQL“移植”到sqlite:

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

3 个答案:

答案 0 :(得分:12)

datetime('now')为您提供UTC的当前日期和时间,因此SQL的等效于MySQL的UTC_TIMESTAMP()

知道给定日期和时间字符串,datetime可以使用datetime('2011-09-25 18:18', 'utc')将其从localtime转换为UTC,这也可能很有用。

您还可以使用datetime()功能应用修饰符,例如“+1天”,“月初”,“ - 10年”等等。

因此,您的示例在SQLite中看起来像这样:

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

您可以在SQLite Date and Time Functions page上找到更多修饰符。

答案 1 :(得分:2)

sqlite中没有本机时间戳支持。

我使用普通旧(64位)整数作为时间戳,表示自纪元以来的微秒或毫秒。

因此,假设毫秒:

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

并将系统时间(以毫秒为单位)绑定到第一个参数。

答案 2 :(得分:1)

在SQLite中有LOCAL_TIMESTAMP,但它是GMT。