使用';现在';sqlite中的日期算法

使用';现在';sqlite中的日期算法,sql,sqlite,Sql,Sqlite,我有一个sqlite表,其中的日期字段是YYYYMMDD格式的整数(so 20131204=Dec 42013),字段名是cycleStarted 我试图计算从DateStart到今天的天数(在本例中,cycleStard=10) 我有一点问题-这是我的sql-不用说-不起作用 SELECT julianday(substr('now', 1, 4) || '-' || substr('now', 5, 2) || '-' || substr('now', 7, 2)) - julianday

我有一个sqlite表,其中的日期字段是YYYYMMDD格式的整数(so 20131204=Dec 42013),字段名是cycleStarted

我试图计算从DateStart到今天的天数(在本例中,cycleStard=10)

我有一点问题-这是我的sql-不用说-不起作用

SELECT  julianday(substr('now', 1, 4) || '-' ||
substr('now', 5, 2) || '-' ||
substr('now', 7, 2)) -
julianday(substr(cyclestarted, 1, 4) || '-' ||
substr(cyclestarted, 5, 2) || '-' ||
substr(cyclestarted, 7, 2))
FROM cycles WHERE cycleid = 10
有人能给我指出正确的方向吗


谢谢。

您正在使用字符串literal
'now'
的子字符串,而不是当前日期的子字符串。如果您想要当前的儒略日期,只需编写
julianday('now')

您可以试试这个

    SELECT CAST(JULIANDAY('NOW') - JULIANDAY(SUBSTR(cyclestarted, 1, 4) || '-' || SUBSTR(cyclestarted, 5, 2) || '-' || SUBSTR(cyclestarted, 7, 2)) AS INT)
      FROM cycles
      WHERE cycleid = 10

正确的方向是不要依赖yyyymmdd生成有用的整数,您可以使用这些整数进行数学运算。月底和年底会把你搞得一团糟。读这个。