如何在 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
).
我正在尝试获取 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
).