在计算SQLite中两个日期之间的差异时,请考虑以下问题:
我有一张包含以下信息的表,其中有2种不同的情况。该表中的每个项目代表2种可能情况中的1种。
Project name | date | date1 | StageDuration* (header row)
Project1 | 2018-12-01 |-(no date or NULL) |16
Project2 | 2018-12-14 | 2018-12-06 |3
Project2 | 2018-11-30 | 2018-12-06 |3
对于项目2(第二种情况),由于给定表是左联接的结果,因此可能有2行。项目名称和日期列来自表1,项目名称,日期1,StageDuration列来自表2。如果我在table1中有1行以上,在表2中有1行,则在连接表中会获得2行(像这样)例如)。
当前,我使用以下SQLite代码获取case1 / project1的工期:
select *,
case when `date` IS NULL then `StageDuration` else '' end
as "Duration"
from report
它适用于project1。我要解决的问题是修改代码,并获得第二种情况的条件(project2)。
我期望的条件是
if count(dates from report 1/date)>count(dates from report 2/date1)
差异应为(我需要的持续时间)计算为
today - max(JULIANDAY(`date`))
将非常感谢您的帮助。这是我的第二个问题。感谢您的时间和事先的理解。
答案 0 :(得分:0)
从子查询中获取最大日期,然后将其与项目名称相结合,然后使用该日期来计算工期
SELECT t1.*, proj_date1, stage_duration,
CASE WHEN proj_date IS NULL then stage_duration
ELSE julianday(date('now')) - julianday(max_date)
END as "Duration"
FROM table1 t1
JOIN table2 t2 ON t1.proj_name = t2.proj_name
JOIN (SELECT proj_name, MAX(proj_date) as max_date
FROM table1
GROUP BY proj_name) AS s ON t1.proj_name = s.proj_name
我使用了自己的表/列名,但我希望查询仍然有意义