如何在sqlite中获得以秒为单位的时间差?
我试图在sqlite db(运行sqlite 3.12.1)上获得两个时间戳之间的时间差(以秒为单位)。我在堆栈溢出上尝试了一些我在这里发现的方法,但似乎没有任何效果 作为参考,我尝试将datetime字段创建为整数和文本字段,得到了相同的结果。下面是我正在运行的查询及其生成的结果集 实际上,我正在尝试在SQL Server中复制datediff()函数如何在sqlite中获得以秒为单位的时间差?,sql,string,sqlite,datetime,date-arithmetic,Sql,String,Sqlite,Datetime,Date Arithmetic,我试图在sqlite db(运行sqlite 3.12.1)上获得两个时间戳之间的时间差(以秒为单位)。我在堆栈溢出上尝试了一些我在这里发现的方法,但似乎没有任何效果 作为参考,我尝试将datetime字段创建为整数和文本字段,得到了相同的结果。下面是我正在运行的查询及其生成的结果集 实际上,我正在尝试在SQL Server中复制datediff()函数 select cast(JulianDay('now') - JulianDay(last_upd_dt) * 24 * 60 * 60 A
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
日期值应以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'
修饰符的函数返回日期的unix时间戳(自'1970-01-01'
以来的秒数)(前提是格式为YYYY-MM-DD hh:MM:ss
)。当我使用格式为文本的日期时间字段时,我仍然得到一个空值。@Lukehofman:下面是一个db小提琴,演示了以下概念:。正如你所看到的,这是可以解释的。你是对的,我从零开始创建了a表,它工作了,我想知道为什么它不能与我的实际数据集一起工作。。。。不管怎样,谢谢你的帮助,我会到别处看看我的数据有什么问题。