У меня есть два значения даты ввода, и я хотел бы рассчитать разницу между этими датами (количество лет) и сохранить ее как возраст
Я попытался использовать приведенную ниже команду psql. Однако это приводит к десятичной форме. Как я могу это обойти и есть ли другой элегантный способ написать это?
select icu.intime, p.dob, EXTRACT('epoch' from icu.intime - p.dob) / 60.0 /
60.0 / 24.0 / 365.242 as age from patients p inner join
icustays icu on p.subject_id = icu.subject_id


использовать возрастную функцию
select age(intime,dob)
так что в вашем случае это будет
select icu.intime, p.dob, age(icu.intime,p.dob) as number_age from patients p inner join
icustays icu on p.subject_id = icu.subject_id
используйте год извлечения, если вам нужен только год
EXTRACT(YEAR from (age(icu.intime,p.dob)))
просто извлеките год из возраста
@SELVA Обратите внимание, что age() возвращает интервал, а extract(year from age(...)) возвращает только полные годы из этого числа. Итак, если возраст, например. 11 месяцев extract(year from age(...)) вернутся 0
Хорошо, я использовал функцию раунда, и это сработало. Думаю, это была проблема с синтаксисом. Тем не менее, я хотел бы знать, могу ли я получить только компонент «Год» из вашей функции «возраст», такой как 65,66 В ЦИФРОВОМ формате, а не как 65 лет. Я не хочу месяц, дни и т. д.