Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Отнять дату от даты / 3 сообщений из 3, страница 1 из 1
03.12.2017, 00:38:21
    #39563179
vas_ilisa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отнять дату от даты
Здравствуйте. Не получается отнять дату от даты.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE FUNCTION student.age(@code char(11))
RETURNS int AS
BEGIN
DECLARE
    @birthday date = student.birthday(@code),
    @today date = CAST(GETDATE() AS date),
    @age int = CAST(DATEDIFF(year, @today, @birthday) AS int)
	IF @today > @birthday
		RETURN @age
	ELSE
		RETURN @age - 1
END



Программа ругается на @age int = CAST(DATEDIFF(year, @today, @birthday) AS int)
Пишет ошибку Must declare the scalar variable
Не понимаю, что не так...
Заранее спасибо за любые советы.
...
Рейтинг: 0 / 0
03.12.2017, 06:06:30
    #39563205
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отнять дату от даты
1. Переменные надо называть одинаковыми буквами.
2. Выкиньте свой бред.
3. Учитесь у ia

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
-- Description:	Возраст человека с днем рождения @Birthday на дату @Date. Если @Date is null, то возраст вычисляется на текущий момент.
/*
  select * from [dbo].[Age]('20170101', '20160101')
*/
ALTER FUNCTION [dbo].[Age] 
(	
	@Birthday datetime, 
	@Date datetime = null
)
RETURNS TABLE 
AS
RETURN 
( with dt0 as ( select [@Date] = isnull( @Date, getdate() ) )
     , dt as ( select [@Date], YearDiff = datediff( year, @Birthday, dt0.[@Date] ) from dt0 )
	select  Age = YearDiff
                  + ( sign( datediff(day, @Birthday, dateadd(year, -dt.YearDiff, dt.[@Date] ) ) ) - 1 ) / 2
	  from dt
)
...
Рейтинг: 0 / 0
03.12.2017, 06:10:31
    #39563206
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отнять дату от даты
Пардон, поправка к п.1

Низзя в одном declare присваивать и использовать присвоенное.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Отнять дату от даты / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]