Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Интеграция отчета с mysql в visual studio 2013  [new]
aldabergenovb
Member

Откуда:
Сообщений: 14
Добрый день форумчане! Есть такая проблема, есть запрос для отчета по выводу данных о животных (поля вид животного, пол, дата постановки на учет, возраст и тд)

Теперь не могу рассчитать возраст животного в отчете, выводит (DATEDIFF(Year, BirthDay, GetDate()) age) просто например 1 и тд
нужно в формате допустим 1 год 2 месяца

Вот сам запрос
SELECT pKind.NameRu kind, gen.NameRu gender, regData.RegDate, regCause.NameRu regCause, DATEDIFF(Year, BirthDay, GetDate()) age, mast.NameRu BreedName, individ.OwnerName
	,region.KatoNameRu Область, district.KatoNameRu Район, kato.KatoNameRu со, unregDate, unregCause.NameRu UnregCause 
FROM fact_RegData regData WITH(nolock)
	INNER JOIN fact_Animal animal ON animal.Inj = regData.AnimalInj
	INNER JOIN dic_AnimalKind kind ON kind.Id = animal.AnimalKindId
	INNER JOIN dic_AnimalKind pKind ON pKind.Id = kind.Pid
INNER JOIN dic_Gender gen on gen.id= animal.genderid
	INNER JOIN dic_Cause regCause ON regCause.Id = regData.regCauseId
	INNER JOIN dic_Mast mast ON mast.Id = animal.MastId
	INNER JOIN (SELECT Id, isnull (LastNameRu,0) + ' ' + isnull(FirstNameRu,0) + ' ' +isnull(MiddleNameRu,0) OwnerName, Iin FROM fact_Individual
				UNION
				SELECT Id, NameRu, Bin FROM fact_Juridical)individ ON individ.Id = regData.OwnerId 
				INNER JOIN dic_AutoObject ao ON ao.Id = regdata.autoobjectid
     INNER JOIN dic_Kato kato ON kato.TE = ao.TE
 INNER JOIN dic_Kato district ON district.AB = kato.AB AND kato.CD = district.CD AND district.HIJ = 0 AND district.EF = 0
 INNER JOIN dic_Kato region ON region.AB = kato.AB AND region.CD = 0 
	LEFT JOIN dic_Cause unregCause ON unregCause.Id = regData.unregCauseId
WHERE AnimalInj = @inj
5 апр 16, 08:48    [19017137]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
Glory
Member

Откуда:
Сообщений: 104751
aldabergenovb
нужно в формате допустим 1 год 2 месяца

Придется написать свою функцию
И DATEDIFF кстати считает не то, что вы думаете
5 апр 16, 08:49    [19017142]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
aldabergenovb
Member

Откуда:
Сообщений: 14
Glory, Просто думаю можно сделать проще в visual studio через expression, только не знаю как это реализовать
5 апр 16, 08:51    [19017150]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
aldabergenovb
Member

Откуда:
Сообщений: 14
Glory, До этого вместо DATEDIFF(Year, BirthDay, GetDate()) age, стояло DATEDIFF(M, BirthDay, GetDate()) и получалось считало сколько животному месяцев
5 апр 16, 08:52    [19017154]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
Glory
Member

Откуда:
Сообщений: 104751
aldabergenovb
Просто думаю можно сделать проще в visual studio через expression, только не знаю как это реализовать

Как из числа N получить M и K ? Где M есть целая часть от деления N на Х, а К - остаток от деления N на Х ?
5 апр 16, 08:55    [19017166]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
aldabergenovb
Member

Откуда:
Сообщений: 14
Glory, Немного не ясно.
Почитал на форуме темы про функции, все равно не получается
5 апр 16, 08:57    [19017176]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
aldabergenovb
Member

Откуда:
Сообщений: 14
Glory, Поле BirthDay в таком формате "2011-03-15"
5 апр 16, 08:59    [19017180]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
Glory
Member

Откуда:
Сообщений: 104751
aldabergenovb
все равно не получается

Не получается что ? Делить не получается число на число ?

Например, 29 месяцев - это 29:12=2 года и 29 - 12*2 = 5 месяца
5 апр 16, 09:00    [19017184]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
aldabergenovb
Member

Откуда:
Сообщений: 14
Glory
aldabergenovb
нужно в формате допустим 1 год 2 месяца

Придется написать свою функцию
И DATEDIFF кстати считает не то, что вы думаете


если не DateDiff тогда что?
5 апр 16, 09:07    [19017208]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
Glory
Member

Откуда:
Сообщений: 104751
aldabergenovb
если не DateDiff тогда что?

select datediff(year, '20151231', '20160101'),datediff(month, '20151231', '20160101')
5 апр 16, 09:09    [19017218]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
aldabergenovb
Member

Откуда:
Сообщений: 14
Glory, спасибо!!!
5 апр 16, 09:16    [19017251]     Ответить | Цитировать Сообщить модератору
 Re: Интеграция отчета с mysql в visual studio 2013  [new]
aldabergenovb
Member

Откуда:
Сообщений: 14
Glory, Помогло
DATEDIFF(MONTH, BirthDay, GetDate())/12 
 DATEDIFF(MONTH, BirthDay, GETDATE())%12 
5 апр 16, 11:48    [19018044]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить