You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL计算床位入住率:PatientAdmissions表总住院时长查询报错求助

解决PatientAdmissions表的住院时长统计问题

没问题,我来帮你搞定这个SQL查询!首先得明确核心需求:我们要统计用户指定时间段内的总住院时长(所有符合条件的住院记录中,入院到出院的日期差总和),同时算出该指定时间段的总天数。下面分两种常见场景给出具体的SQL写法,适配不同数据库。

场景1:住院记录完全在指定时间段内

这种情况是指患者的入院日期(AdmitDate)不早于用户提供的FromDate,且出院日期(DischargeDate)不晚于ToDate。

MySQL 写法

SELECT
    -- 计算所有符合条件的住院记录总时长(单位:天)
    SUM(DATEDIFF(DischargeDate, AdmitDate)) AS TotalStayDays,
    -- 计算指定时间段的总天数(包含首尾日期,若不需要+1则去掉)
    DATEDIFF(@ToDate, @FromDate) + 1 AS PeriodTotalDays
FROM PatientAdmissions
WHERE
    AdmitDate >= @FromDate
    AND DischargeDate <= @ToDate;

说明:DATEDIFF(a,b)在MySQL中返回的是a - b的天数差,如果业务要求"当天入院出院算1天",可以把SUM里的部分改成SUM(DATEDIFF(DischargeDate, AdmitDate) + 1)。

SQL Server 写法

SELECT
    SUM(DATEDIFF(DAY, AdmitDate, DischargeDate)) AS TotalStayDays,
    DATEDIFF(DAY, @FromDate, @ToDate) + 1 AS PeriodTotalDays
FROM PatientAdmissions
WHERE
    AdmitDate >= @FromDate
    AND DischargeDate <= @ToDate;

说明:SQL Server的DATEDIFF需要指定时间单位(这里用DAY),第一个参数是起始日期,第二个是结束日期。同样,若要当天入院出院算1天,需在SUM内加1。

PostgreSQL 写法

SELECT
    SUM(EXTRACT(DAY FROM DischargeDate - AdmitDate)) AS TotalStayDays,
    EXTRACT(DAY FROM @ToDate - @FromDate) + 1 AS PeriodTotalDays
FROM PatientAdmissions
WHERE
    AdmitDate >= @FromDate
    AND DischargeDate <= @ToDate;

说明:PostgreSQL中直接用日期相减会得到间隔类型,用EXTRACT(DAY FROM ...)提取天数部分即可。

场景2:住院记录跨指定时间段(部分重叠)

如果需要统计那些和指定时间段有交集的住院记录(比如患者在FromDate前入院,ToDate后出院,只计算重叠部分的时长),可以用下面的写法:

MySQL 示例

SELECT
    SUM(
        DATEDIFF(
            LEAST(DischargeDate, @ToDate), -- 取出院日期和ToDate的较小值
            GREATEST(AdmitDate, @FromDate) -- 取入院日期和FromDate的较大值
        ) + 1 -- 包含首尾日期则+1,否则去掉
    ) AS TotalStayDays,
    DATEDIFF(@ToDate, @FromDate) + 1 AS PeriodTotalDays
FROM PatientAdmissions
WHERE
    -- 筛选出和指定时间段有交集的记录
    AdmitDate <= @ToDate
    AND DischargeDate >= @FromDate;

关键说明

  • @FromDate和@ToDate是用户输入的参数,实际使用时替换成具体日期值(比如'2024-01-01')或者程序传入的参数。
  • 如果需要统计小时/分钟级别的时长,只需把对应的日期差函数换成对应单位即可(比如MySQL的TIMESTAMPDIFF(HOUR, AdmitDate, DischargeDate))。

内容的提问来源于stack exchange,提问作者Shahad g

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:01:06