Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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中select的意外结果_Sqlite - Fatal编程技术网

sqlite中select的意外结果

sqlite中select的意外结果,sqlite,Sqlite,我很难理解为什么SELECT结果中的一列返回0。我正在尝试内部联接表1和表2。列“Time2”的查询与表1中的Time3类似。这是我的疑问: SELECT [ID] AS [ID1], [RESULT.CurrentDate] AS [CurrentDate], strftime("%j", substr([RESULT.CurrentDate], 1, instr([RESULT.CurrentDate], ' ') - 1) ) AS Time3,

我很难理解为什么SELECT结果中的一列返回0。我正在尝试内部联接表1和表2。列“Time2”的查询与表1中的Time3类似。这是我的疑问:

SELECT [ID] AS [ID1],
       [RESULT.CurrentDate] AS [CurrentDate],
       strftime("%j", substr([RESULT.CurrentDate], 1, instr([RESULT.CurrentDate], ' ') - 1) ) AS Time3,
       b.Time2,
       [ID2],
       [No],
       Date,
       abs(b.Time2 - Time3) AS Time4
  FROM Table1 a
       INNER JOIN
       Table2 b ON a.[ID1] = b.[ID2] AND 
                abs(b.Time2 - Time3) < 7

我不明白为什么(
b.Time2-Time3
)是0?我想应该是每行15和0。我错过了什么吗

在SQLite中没有日期时间数据类型。
任何类似于
2019-11-07 12:21:17
的值都被视为
TEXT
,因此当您尝试减法时,请说:

'2019-11-07 12:21:17' - '2019-11-06 10:20:10'
SQLite所做的是尝试将每个值转换为一个数值,从第一个字符开始,向右移动,直到到达一个非数字字符。
因此,结果是:

2019 - 2019
您将得到
0
,因为在这两个日期中,从左侧开始的有效数字部分都是
2019

如果要在SQLite中减去日期,请使用:

它将返回以天为单位的差值(带小数部分)。

请参阅。

感谢您解释结果返回0的原因。现在一切都清楚了!
2019 - 2019
julianday(b.Time2) - julianday(Time3)