如何在 sqlite 中获得以秒为单位的时差?

How do I get a the time difference in seconds in sqlite?

我正在尝试获取 sqlite 数据库(运行 sqlite 3.12.1)上两个时间戳之间的时间差(以秒为单位)似乎按预期工作。

作为参考,我尝试将日期时间字段创建为整数字段和文本字段,但我得到了相同的结果。下面是我 运行 的查询及其生成的结果集。

本质上,我试图在 SQL Server

中复制 datediff() 函数
 select cast(JulianDay('now') - JulianDay(last_upd_dt) * 24 * 60 * 60 As Integer) "gives me null value",
 last_upd_dt as "from date",
 datetime('now') as "To date this will be another field in the future",
 (datetime('now') - last_upd_dt  ) as "Gives me 2012 on all records"
 from sqlite_db 

您的日期值应存储为 TEXT 数据类型,采用 SQLite 支持的格式之一,例如 YYYY-MM-DD HH:MI:SS.

那么,你可以做

select (julianday('now') - julianday(last_upd_dt)) * 24 * 60 * 60 as date_diff_seconds
from mytable

您的代码存在问题,您应该在日期差值两边加上括号,然后乘以 24 * 60 * 60。
但是有一种更简单的方法可以在几秒钟内得到两个日期之间的差异:

select strftime('%s', 'now') - strftime('%s', last_upd_dt)
from sqlite_db

带有'%s'修饰符的函数strftime() returns日期的unix时间戳(自'1970-01-01'以来的秒数)(前提是格式为YYYY-MM-DD hh:mm:ss).