Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/141: Рейтинг темы: голосов - 141, средняя оценка - 4.72
3 / 3 / 0
Регистрация: 22.06.2016
Сообщений: 61
1

Как вычислить возраст студента?

16.11.2016, 05:44. Показов 27685. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При помощи DATEDIFF
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2016, 05:44
Ответы с готовыми решениями:

Запрос: вычислить средний возраст
Всем привет! Есть таблица на Microsoft SQL Server, в которой Имя, Фамилия и дата рождения, не могу...

Словари: увеличить возраст конкретного студента на 1
Пусть список студентов представлен в виде структуры ,,]. Преобразуйте список в словарь вида: {№: ,...

Вывести возраст студента и срок его обучения
Помогите пожалуйста, (Разработайте консольную прикладную программу, которая предлагает пользователю...

Есть масса каждого студента группы. Вычислить среднюю массу студента в группе
Блок-схема и программа Есть масса каждого студента группы. Вычислить среднюю массу студента в...

16
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
16.11.2016, 09:41 2
Ну и чего сложного DATEDIFF ( datepart , startdate , enddate )
Допустим возвраст в днях
SQL
1
DATEDIFF(DAY,'2008-06-05','2008-08-05')
Хочешь в годах пожалуйста
SQL
1
DATEDIFF(YEAR, '2012/04/28', '2014/04/28');
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,270
16.11.2016, 13:45 3
Цитата Сообщение от Игорь1986 Посмотреть сообщение
Хочешь в годах пожалуйста
T-SQL
1
DATEDIFF(YEAR, '2012/04/28', '2014/04/28'
А ничего, что 28-го месяца не бывает?
И какой получится возраст, если
T-SQL
1
DATEDIFF(YEAR, '20120428', '20140101'
?
0
3 / 3 / 0
Регистрация: 22.06.2016
Сообщений: 61
16.11.2016, 16:25  [ТС] 4
SQL
1
2
3
4
5
6
7
8
SELECT        TOP (100) PERCENT dbo.Faculties.Faculty, dbo.Specialties.Specialty, dbo.[GROUP].[GROUP], dbo.Students.Name, dbo.Nationalities.Nationality, dbo.Region.Region, dbo.Students.Age
FROM            dbo.Students INNER JOIN
                         dbo.Nationalities ON dbo.Students.Nationality = dbo.Nationalities.ID INNER JOIN
                         dbo.Region ON dbo.Students.Region = dbo.Region.ID INNER JOIN
                         dbo.[GROUP] ON dbo.Students.[GROUP] = dbo.[GROUP].ID INNER JOIN
                         dbo.Specialties ON dbo.[GROUP].Specialty = dbo.Specialties.ID INNER JOIN
                         dbo.Faculties ON dbo.Specialties.Faculty = dbo.Faculties.ID
ORDER BY dbo.Faculties.Faculty, dbo.Specialties.Specialty, dbo.[GROUP].[GROUP], dbo.Students.Name
Должен высчитывать из таблицы студенты, столбец DateBorn
0
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
16.11.2016, 16:45 5
Посмотри синтаксис пожалуйста, сначала идет год-месяц-число это первое, поэтому неправ ты
второе при такой записи возраст будет 2 года, так как произойдет округление до года, поэтому я и предложил в днях изначально, я привел пример а не то как сделать чтобы все красиво, что ТС надо будет то он и выберет)))

Добавлено через 2 минуты
dbo.Students.Age ты имел ввиду
Предположу DATEDIFF(yy,dbo.Students.Age,CURDATE()) AS DateBorn

Не по теме:


iap нафига было лезть в тему со своим огородом не разобравшись, считаешь себя умнее других

0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,270
16.11.2016, 16:46 6
Цитата Сообщение от Игорь1986 Посмотреть сообщение
Посмотри синтаксис пожалуйста, сначала идет год-месяц-число это первое, поэтому неправ ты
второе при такой записи возраст будет 2 года, так как произойдет округление до года, поэтому я и предложил в днях изначально, я привел пример а не то как сделать чтобы все красиво, что ТС надо будет то он и выберет)))

Добавлено через 2 минуты
dbo.Students.Age ты имел ввиду
Предположу DATEDIFF(yy,dbo.Students.Age,CURDATE()) AS DateBorn

Не по теме:


iap нафига было лезть в тему со своим огородом не разобравшись, считаешь себя умнее других

Надо не хамить, а учиться, умник!
А кто-то примет твою околесицу всерьёз.

Бекболот, конструкцию TOP(100) PERCENT ... ORDER BY MS SQL Server игнорирует.
В крайнем случае можно написать TOP(SELECT 100) PERCENT ... ORDER BY. Правда, непонятно, зачем.
0
3 / 3 / 0
Регистрация: 22.06.2016
Сообщений: 61
16.11.2016, 16:46  [ТС] 7
Данные о дате рождения в столбце DateBorn, возраст нужно вывести в столбце Age.
И ошибка вот такая выползает "Error in SELECT clause: expression near '('.
Missing FROM clause.
Unable to parse query text."
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,270
16.11.2016, 16:50 8
Цитата Сообщение от Бекболот Посмотреть сообщение
Данные о дате рождения в столбце DateBorn, возраст нужно вывести в столбце Age.
И ошибка вот такая выползает "Error in SELECT clause: expression near '('.
Missing FROM clause.
Unable to parse query text."
Ругается на скобки в конструкции TOP(100) ?
Их можно писать только начиная с версии SQL2005.
До этого - просто TOP 100.
Если версия SQL2000, то моё замечание про игнорирование 100% к этой версии не относилось.
0
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
16.11.2016, 16:50 9

Не по теме:


Самому тебе надо подучиться немного


DATEDIFF(yy,dbo.Students.DateBorn,CURDATE()) AS Age
0
3 / 3 / 0
Регистрация: 22.06.2016
Сообщений: 61
16.11.2016, 17:14  [ТС] 10
У меня sql2014
и еще вот такая ошибка выползает "Incorrect sintax near 'yy' "
0
3546 / 2120 / 752
Регистрация: 02.06.2013
Сообщений: 5,144
16.11.2016, 17:32 11
Цитата Сообщение от Игорь1986 Посмотреть сообщение
DATEDIFF(yy,dbo.Students.DateBorn,CURDATE())
Поразмышляйте над результатом
T-SQL
1
2
select
 datediff(year, '20001115', '20161114');
0
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
16.11.2016, 20:59 12
И что 5 лет, вычисляет полные года
0
3546 / 2120 / 752
Регистрация: 02.06.2013
Сообщений: 5,144
16.11.2016, 21:23 13
Цитата Сообщение от Игорь1986 Посмотреть сообщение
И что 5 лет, вычисляет полные года
Какие 5 лет? А что на самом деле вычисляет datediff, прочтите в документации.

Можно себе представить, что Игорю1986 заказали разработать ИС для военкомата.
В результате применения им авторской методики определения возраста призывников, весеннему призыву 2017 г. будут подлежать все, родившиеся в 1999 г., вне зависимости от дня и месяца рождения...
0
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
17.11.2016, 09:31 14
Хорошо давайте думать, может и я неправ,тогда может как то так
SQL
1
SELECT TIMESTAMPDIFF(YEAR,dbo.Students.DateBorn,curdate())
0
3546 / 2120 / 752
Регистрация: 02.06.2013
Сообщений: 5,144
17.11.2016, 11:23 15
Игорь1986, разве мы о MySQL беседуем?
T-SQL
1
datediff(year, dbo.Students.DateBorn, getdate()) - case when datepart(dayofyear, dbo.Students.DateBorn) > datepart(dayofyear, getdate()) then 1 else 0 end
0
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
17.11.2016, 11:42 16
Ну я хотел по другому
SQL
1
 DATEDIFF(YEAR,dbo.Students.DateBorn, GETDATE())+(SIGN(DATEDIFF(DAY,dbo.Students.DateBorn, DATEADD(YEAR, YEAR(dbo.Students.DateBorn)-YEAR(GETDATE()), GETDATE())))-1)/2;
0
3 / 3 / 0
Регистрация: 22.06.2016
Сообщений: 61
17.11.2016, 15:24  [ТС] 17
Спасибо , ребята. У меня получилось. Ошибка была в пропущенной запятой
0
17.11.2016, 15:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2016, 15:24
Помогаю со студенческими работами здесь

Вывести на экран фамилию самого молодого студента и его возраст.
Помогите с задачами. 1.Дан текстовый файл, содержащий данные о студентах: фамилия студента,...

Вывести на экран фамилию самого старшего студента и средний возраст для всех студентов
Создать файл, элементами которого являются сведения о студентах: фамилия, возраст, место...

Для студентов 1 курсов - Курсовая (создать структуру, элементами которой являются фамилия студента и его возраст)
Написать программу, в которой необходимо создать структуру, элементами которой являются фамилия...

Как вычислить возраст по дате рождения
Здравствуйте, это снова я :curtsy: подскажите пож-ста, у меня нарисовалась проблемка, есть две...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru