将 INT INTO DATE 转换为 AGE
Convert INT INTO DATE to calculate AGE
我在 PostgreSQL 上查询有问题。我有一个学校的案例,我需要计算一个人在 2005 年 9 月 1 日注册学校时的年龄。在一个文件中,我有他们的出生日期,只有学校注册的年份。
注册年份是 int 类型 ('2005'),但我需要将其转换为 01-09-2005 (DD-MM-YYYY),这是学年的开始。我该怎么做?
如果要计算注册日期和出生日期之间的差异,是否需要将其转换为日期类型?
如果是,我如何转换它以使出生日期在日期类型上并具有格式“01-09-2005”。
我有一个答案,但我不应该这样做 :
SELECT AGE('01/09/2005', auditeur.date_nais)
FROM auditeur
JOIN inscription ON auditeur.id_auditeur = inscription.id_auditeur
我想要的是用 annee
('2005') 替换 '01/09/2005',这是一个 int
类型。
这就是您从 integer
:
中获得所需 date
的方法
(2005 || '-09-01')::date
串联力将 2005
转换为 text
。使用 ISO 8601 格式 YYYY-MM-DD
。然后转换为 date
不依赖于当前的 datestyle
设置。
SELECT age((i.annee || '-09-01')::date, a.date_nais) AS age_at_registration
FROM auditeur a
JOIN inscription i USING (id_auditeur)
WHERE a.id = 123; -- select person somehow
相关:
- How to concatenate columns in a Postgres SELECT?
- Selecting records between two timestamps
不需要生成字符串然后转换为日期。您有 3 个整数:来自 table 的 annee 和常量值 09 表示月,01 表示日。有了这些,只需使用 make_date 函数,它接受 3 个整数和 returns 一个日期。
select age( make_date (annee,09,01), auditeur.date_nais)
from auditeur
join inscription
on auditeur.id_auditeur = inscription.id_auditeur
我在 PostgreSQL 上查询有问题。我有一个学校的案例,我需要计算一个人在 2005 年 9 月 1 日注册学校时的年龄。在一个文件中,我有他们的出生日期,只有学校注册的年份。
注册年份是 int 类型 ('2005'),但我需要将其转换为 01-09-2005 (DD-MM-YYYY),这是学年的开始。我该怎么做?
如果要计算注册日期和出生日期之间的差异,是否需要将其转换为日期类型?
如果是,我如何转换它以使出生日期在日期类型上并具有格式“01-09-2005”。
我有一个答案,但我不应该这样做 :
SELECT AGE('01/09/2005', auditeur.date_nais)
FROM auditeur
JOIN inscription ON auditeur.id_auditeur = inscription.id_auditeur
我想要的是用 annee
('2005') 替换 '01/09/2005',这是一个 int
类型。
这就是您从 integer
:
date
的方法
(2005 || '-09-01')::date
串联力将 2005
转换为 text
。使用 ISO 8601 格式 YYYY-MM-DD
。然后转换为 date
不依赖于当前的 datestyle
设置。
SELECT age((i.annee || '-09-01')::date, a.date_nais) AS age_at_registration
FROM auditeur a
JOIN inscription i USING (id_auditeur)
WHERE a.id = 123; -- select person somehow
相关:
- How to concatenate columns in a Postgres SELECT?
- Selecting records between two timestamps
不需要生成字符串然后转换为日期。您有 3 个整数:来自 table 的 annee 和常量值 09 表示月,01 表示日。有了这些,只需使用 make_date 函数,它接受 3 个整数和 returns 一个日期。
select age( make_date (annee,09,01), auditeur.date_nais)
from auditeur
join inscription
on auditeur.id_auditeur = inscription.id_auditeur