Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sqlite中获得以秒为单位的时间差?_Sql_String_Sqlite_Datetime_Date Arithmetic - Fatal编程技术网

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

如何在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

我试图在sqlite db(运行sqlite 3.12.1)上获得两个时间戳之间的时间差(以秒为单位)。我在堆栈溢出上尝试了一些我在这里发现的方法,但似乎没有任何效果

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

实际上,我正在尝试在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 

日期值应以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表,它工作了,我想知道为什么它不能与我的实际数据集一起工作。。。。不管怎样,谢谢你的帮助,我会到别处看看我的数据有什么问题。