SQL日期计算

问题描述:

需要一些帮助进行SQL日期计算:SQL日期计算

在表格中,我有18岁以上的病人死于某种疾病(表a)。在另一张表格中,我有患同一种疾病的患者和他们被诊断患有这种疾病的最早日期(表b)。

我需要知道的是自从他们被诊断以及他们死亡12个月后。

有人可以帮助我执行这个日期计算。

对于日期,表a中的列是indexdate,列b中的死亡列是死亡时的列。

感谢所有帮助

表A:

patientid--age--deathdate 
1   20 11/05/2016 
2   19 10/09/2015 

表B:

PatientID--indexdate 
1   01/02/2015 
2   08/03/2014 

所以基本上我要的是检查是否12个月indexdate和deathdate之间传递。

+0

林不知道你想要什么..你能请张贴你的表像吗? – Sk1X1

+0

你能否提供表格定义和一个示例查询---可能不完整---表明你想得到什么。对于单个病人?对于单一疾病?如何识别诊断?等等 –

+0

重复:http://*.com/questions/17833176/postgresql-days-months-years-between-two-dates – McNets

这给出了自诊断和死亡12个月后患者的名单。

SELECT A.patientID, A.patientName 

FROM tableA A 
INNER JOIN 
(
SELECT patientID , MIN(DiagnoseDate) As EarliestDate 
FROM tableB 
GROUP BY patientID 
) As B 

ON A.patientID = B.patientID 
WHERE date_part('month',age(EarliestDate, DeathDate)) >=12 
+0

之后会给这个去。既然它说>> = 12,我假设它也会为那些在12个月前死亡的人提供结果? – timz

+0

不,这给出了他们的死亡日期和最早诊断日期差异的患者名单是12个月' –

+0

如果我想要12个月或更长时间,该怎么办? – timz

你应该能够做到这一点通过编写由患者ID链接2个表的查询,然后使用DATEADD函数在where子句中,这将是这样的例子:

WHERE TableA.deathdate>(DATEADD(month,12,TableB.indexdate))

+0

Postgres中没有'dateadd()' –

+0

啊 - 我甚至没有注意到它是postgress--只是看到了SQL。 – Webbo

+0

..但相同的逻辑应该与postgress等效工作http://*.com/questions/27080505/dateadd-equivalent-in-postgresql – Webbo