INTERVAL
和UTC_TIMESTAMP
的sqlite等价物是什么?例如,假设您将以下SQL从MySQL“移植”到sqlite:
SELECT mumble
FROM blah
WHERE blah.heart_beat_time > utc_timestamp() - INTERVAL 600 SECOND;
答案 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。