Рассчитайте datediff с помощью postgresql и укажите количество лет

У меня есть два значения даты ввода, и я хотел бы рассчитать разницу между этими датами (количество лет) и сохранить ее как возраст

Я попытался использовать приведенную ниже команду 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

Хотя я получаю значение возраста, я хотел бы округлить его.Рассчитайте datediff с помощью postgresql и укажите количество лет

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
204
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

использовать возрастную функцию

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)))

Хорошо, я использовал функцию раунда, и это сработало. Думаю, это была проблема с синтаксисом. Тем не менее, я хотел бы знать, могу ли я получить только компонент «Год» из вашей функции «возраст», такой как 65,66 В ЦИФРОВОМ формате, а не как 65 лет. Я не хочу месяц, дни и т. д.

The Great 01.04.2019 11:25

просто извлеките год из возраста

Zaynul Abadin Tuhin 01.04.2019 11:28

@SELVA Обратите внимание, что age() возвращает интервал, а extract(year from age(...)) возвращает только полные годы из этого числа. Итак, если возраст, например. 11 месяцев extract(year from age(...)) вернутся 0

a_horse_with_no_name 01.04.2019 11:31

Другие вопросы по теме