SQL日期计算

SQL日期计算,sql,postgresql,Sql,Postgresql,执行SQL日期计算需要一些帮助: 在一个表中,我有18岁以上死于某种疾病的患者(表a)。在另一个表中,我有相同疾病的患者,以及他们被诊断为该疾病的最早日期(表b) 我需要知道的是,从他们被诊断出来到死亡已经过去了12个月 有人能帮我计算一下日期吗 表a中关于日期的列是indexdate,表b中关于死亡时间的列是deathdate SELECT A.patientID, A.patientName FROM tableA A INNER JOIN ( SELECT patientID , MIN

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

在一个表中,我有18岁以上死于某种疾病的患者(表a)。在另一个表中,我有相同疾病的患者,以及他们被诊断为该疾病的最早日期(表b)

我需要知道的是,从他们被诊断出来到死亡已经过去了12个月

有人能帮我计算一下日期吗

表a中关于日期的列是indexdate,表b中关于死亡时间的列是deathdate

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
谢谢你的帮助

表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

因此,基本上我只想检查indexdate和deathdate之间是否已经过去了12个月。

这列出了自诊断以来已经过去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

通过编写一个查询,通过患者id链接这两个表,然后在where子句中使用dateadd函数,您应该能够做到这一点,该函数类似于以下示例:


WHERE table a.death date>(DATEADD(12月,table b.indexdate))

我不知道你想要什么。。您能提供表定义和一个示例查询(可能不完整)来表明您想要得到什么吗。一个病人?一种疾病?如何确定诊断?等等,等等,重复:已经显示了示例表结构,我后面要说的是PostgresAh中没有
dateadd()
,我甚至没有注意到它是postgress,只是看到了SQL…但是同样的逻辑应该与postgress等价物一起工作,这会让我尝试一下。因为它说>=12,我;i’’我想它也会给出那些在12个月前死亡的患者的结果吗?不,这列出了他们死亡的日期和最早诊断的日期差为12个月的患者名单。如果我想要12个月或更长的时间呢?