计算mySQL中临床患者的预约日期之间的时间差

时间:2014-11-12 08:15:55

标签: mysql datediff

如果患者因为从数据库中预约而迟到了,我想研究一下。

我有一个来自诊所的数据表,其中包含以下列:

  1. Pt - 患者编号
  2. Appt - 患者就诊日期
  3. Next_appt - 指定的下一个约会日期
  4. 它看起来像这样:

    Pt  Appt        Next_appt
    12  2013-04-22  2013-05-21
    12  2013-05-20  2013-07-15
    57  2010-06-08  2010-07-05
    57  2010-08-03  2010-10-19
    127 2009-02-24  2009-06-23
    127 2009-04-20  2009-05-11
    

    因此对于患者12 - 他在2013-05-21被分配了next_appt日期,他参加了2013-05-20(提前1天)

    将Next_appt列向下移动一个然后减去两个就很容易,但随后我会遇到麻烦,因为日期会对应不同的患者。

    数据库中约有20,000名患者(!)。

    我想知道是否有人可以给我一些建议?

    谢谢,

1 个答案:

答案 0 :(得分:0)

试试这个:

select
    t1.*,
    case sign(t2.appt - t1.next_appt)
         when 0 then 'on time'
         when 1 then 'late'
         when -1 then 'early' end 
from 
    your_table t1
left join
    your_table t2
on 
    t1.pt = t2.pt -- shift down with pt as join condition
and t1.appt < t2.appt