首页 > 解决方案 > 如何使用 postgres sql 按年份间隔选择行?

问题描述

我有一张表格,里面有一些来自健康公共系统患者的数据。我在这张桌子上有两个日期,疾病通知的日期和患者的出生日期,像这样:

notification_date | birth_date 
------------------+-----------------
 2013-02-19       | 2013-02-17
 2015-01-28       | 1984-01-22
 2015-02-08       | 1989-10-04
 2015-01-09       | 1984-05-25
 2016-01-28       | 1988-04-26
 2016-01-06       | 1986-05-20

如您所见,通过从这两列中获取年份间隔,我可以了解患者在收到疾病通知时的年龄。我需要查询通知疾病时有多少人的年龄小于 4 岁。

像这样的东西:

SELECT COUNT(id) 
FROM notifications 
WHERE age(notification_date, birth_date) < 4 years;

这个查询是否可能需要特定的时间间隔?

标签: sqlpostgresqldatedatetime

解决方案


我会使用直接日期比较:

select count(*)
from notifications n
where notification_date < birthdate  + interval '4 year';

使用诸如此类的功能age()似乎不必要地麻烦。


推荐阅读