Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
помогите найти ошибку. Неправильный синтаксис около "CAST", ожидалось "AS".

select stflastname + ',' + stffirstname
as staff, datehired, CAST(('1990-10-01' - DateHired) / 365) as integer)
as yearswithschool
from staff
order by stflastname, stffirstname;


и еще вопрос - как преобразовать в этом примере тип данных? пишет ошибку Типы данных time и varchar в операторе add несовместимы.

select starttime, starttime + '00:10'
as newstarttime
from Classes;
24 апр 15, 11:46    [17558046]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
Добрый Э - Эх
Guest
Romanov-krd,

скобки круглые за кастом пересчитай...
24 апр 15, 11:48    [17558061]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
Glory
Member

Откуда:
Сообщений: 104760
Romanov-krd
помогите найти ошибку.

Научитесь считать открывающие и закрывающие скобки
24 апр 15, 11:48    [17558066]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
да точно! а как тип данных преобразовать. ошибку пишет Тип данных операнда varchar недопустим для оператора subtract.

select stflastname + ',' + stffirstname
as staff, datehired, CAST((('1990-10-01' - DateHired) / 365) as integer)
as yearswithschool
from staff
order by stflastname, stffirstname;
24 апр 15, 14:44    [17559365]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
Glory
Member

Откуда:
Сообщений: 104760
Romanov-krd
а как тип данных преобразовать.

Не пробовали через функции преобразования ?

Romanov-krd
'1990-10-01' - DateHired

Это вы из "молока" хотите вычесть "кирпичи" ?
24 апр 15, 14:48    [17559410]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
Добрый Э - Эх
Guest
Romanov-krd
да точно! а как тип данных преобразовать. ошибку пишет Тип данных операнда varchar недопустим для оператора subtract.
select stflastname + ',' + stffirstname
as staff, datehired, 
CAST((('1990-10-01' - DateHired) / 365) as integer)
as yearswithschool
from staff
order by stflastname, stffirstname;
попробуй явно преобразовать '1990-10-01' к дате.
кроме того, поле DateHired какой тип имеет? Если не дата, то тоже нужно явно преобразовать к дате.
и ещё, разность дат не во всех версиях сервера поддерживается. В до 2008-е времена для получения разности между датами нужно использовать функцию Datediff
24 апр 15, 14:49    [17559426]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
Добрый Э - Эх
разность дат не во всех версиях сервера поддерживается. В до 2008-е времена для получения разности между датами нужно использовать функцию Datediff
Чо-то сомневаюсь...
DATEDIFF-то, конечно, всегда.
24 апр 15, 14:59    [17559531]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
o-o
Guest
iap
Добрый Э - Эх
разность дат не во всех версиях сервера поддерживается. В до 2008-е времена для получения разности между датами нужно использовать функцию Datediff
Чо-то сомневаюсь...

никому нельзя верить на слово.
не сочтите за пропагадну 2000-ого, просто 2005 временно недоступен

К сообщению приложен файл. Размер - 44Kb
24 апр 15, 15:15    [17559670]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
Добрый Э - Эх
Guest
iap,

Ничего не понял, но соглашусь с тобой... :)
24 апр 15, 15:19    [17559713]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
o-o
Guest
Добрый Э - Эх
iap,
Ничего не понял, но соглашусь с тобой... :)

это тогда что, я что ли не понимаю?
Добрый Э - Эх говорит: разность дат не во всех версиях сервера поддерживается
iap сомневается.
правильно делает, т.к. можно было вычитать даты как минимум со времен 2000-ого.
а что бесспорно, то DATEDIFF во все времена и тут все дружно подписались :)
24 апр 15, 15:31    [17559792]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
Добрый Э - Эх
Guest
o-o,

тут дело вот в чем. ТС в запросе пытается найти разность дат, затем результат этого вычисления поделить на 365 (кол-во дней в году?), тем самым получив разность в годах между двумя датами. И всё бы было хорошо, но для этого нужно, чтобы разность дат возвращало, как минимум, число дней между этими датами. Мне почему-то подумалось, что такое поведение (вычисление разности дат, как количество дней между ними ) появилось с 2008-й версии сервера. А до этого разность дат выдавала то, что показал ты на своем скрине.

З.Ы.
Сервера никакого под рукой нет, проверить ничего не могу, память меня может подводить.
24 апр 15, 15:55    [17559930]     Ответить | Цитировать Сообщить модератору
 Re: ошибка - Неправильный синтаксис около "CAST", ожидалось "AS".  [new]
o-o
Guest
Добрый Э - Эх,

не, разность дат все так и считается, от 2000 и до 2014,
другое дело, ЧТО Romanov-krd этим хотел получить.
DATEDIFF всегда выдаст INT -- это разница в днях, годах, секундах,...
а разность дат это снова дата,
в том смысле, что и без того дата -- это число дней и (милли? -- не помню. неважно)секунд, прошедших с.

в моем примере конечно, дни с 19000101 до сегодня минус дни с 19000101 по 20150101
даст число дней, мЕньшее числа дней в году, а именно число дней с начала 2015 и по сегодня.
ну а число секунд с полуночи так и останется, т.к. вычиталось из "круглой даты"

а что там высчитывал ТС, пускай сперва сам осознает, потом до нас донесет, я даже и не вникаю.
когда такой бардак с типами, это значит, что в голове каша по поводу того, что хочет на выходе
24 апр 15, 16:12    [17560016]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить