sqlite中select的意外结果
我很难理解为什么SELECT结果中的一列返回0。我正在尝试内部联接表1和表2。列“Time2”的查询与表1中的Time3类似。这是我的疑问: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 [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)