Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как склейить varchar с int, datetime ?  [new]
Apikaster
Member

Откуда:
Сообщений: 51
declare @is int
declare @id datetime
declare @if varchar
set @id = '12.10.2010'
select @id
set @if = '31.12.'+YEAR(@id)
select @if
set @is = (SELECT TOP 1 id FROM testTable WHERE id<>0 AND row=@if AND col=7 ORDER BY col DESC)
set @is = (SELECT TOP 1 id FROM testTable WHERE id<>0 AND row=('31.12.'+YEAR(@id)) AND col=7 ORDER BY col DESC)
select @is

Подскажите пожалуйста что я делаю не так? В переменную @id я записываю какую то дату. А после хочу к примеру взять только год. Но он у меня выдает тут ошибку:" set @if = '31.12.'+YEAR(@id) " как можно сделать это ? я просто хочу задать свою дату. И год взять с переменной @id. Заранее благодарен за вашу помощь.
13 сен 11, 13:26    [11268940]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
aleks2
Guest
set @if = '31.12.'+cast(YEAR(@id) as varchar(4))
13 сен 11, 13:27    [11268953]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
А вы прочитали сообщение об ошибке ?
13 сен 11, 13:27    [11268958]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
DATENAME(YEAR, GETDATE())
13 сен 11, 13:28    [11268975]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Apikaster,

row какого типа?
13 сен 11, 13:38    [11269064]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
Apikaster
Member

Откуда:
Сообщений: 51
Row datetime.
13 сен 11, 13:44    [11269120]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2845
Apikaster,

Вместо вот этих выражений
set @id = '12.10.2010'
set @if = '31.12.'+YEAR(@id)
пишите так
set @id = '20101012'
set @if = CAST(YEAR(@id) AS Varchar(8)) + '1231'
если Вы работает с датами. Так ИМХО лучше.
13 сен 11, 13:44    [11269123]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
Apikaster
Member

Откуда:
Сообщений: 51
Glory,
(строк обработано: 1)
Сообщение 245, уровень 16, состояние 1, строка 6
Ошибка преобразования значения varchar "31.12." в тип данных int.
13 сен 11, 13:45    [11269135]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
Apikaster
Member

Откуда:
Сообщений: 51
studieren,
Сообщение 241, уровень 16, состояние 1, строка 8
Ошибка преобразования даты или времени из символьной строки.
row у меня формата datetime, а ошибку допустил из за этого?
13 сен 11, 13:53    [11269206]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Apikaster
Row datetime
AND row>=DATEADD(DAY,-1, STR(1+YEAR(@id)))
AND row<STR(1+YEAR(@id))
13 сен 11, 14:01    [11269272]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
Apikaster
Row datetime
AND row>=DATEADD(DAY,-1, STR(1+YEAR(@id)))
AND row<STR(1+YEAR(@id))
Только это не
автор
хочу к примеру взять только год
Это записи за 31 декабря года, которому принадлежит @id
13 сен 11, 14:04    [11269302]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Apikaster,

работать с датами надо как с датами, тогда проблем возникает гораздо меньше.
declare @id datetime
declare @if datetime
set @id = '20101210'
set @if = dateadd(yy,datediff(YY,0,@id)+1,-1)

select @id,@if
13 сен 11, 14:19    [11269420]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
Apikaster
Member

Откуда:
Сообщений: 51
iljy,
Ну вот именно. В @id у меня находиться дата. И просто дни и месяцы там могут быть разными.В зависимости от дня и месяца разные данные. Так что мне надо поставить '31.12.'+год который в @id. И сказать что where row = '31.12.2011' к примеру. Должно получиться как то так. Но проблема что на выходит ))
13 сен 11, 14:26    [11269491]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Apikaster
iljy,
Ну вот именно. В @id у меня находиться дата. И просто дни и месяцы там могут быть разными.В зависимости от дня и месяца разные данные. Так что мне надо поставить '31.12.'+год который в @id. И сказать что where row = '31.12.2011' к примеру. Должно получиться как то так. Но проблема что на выходит ))

Что именно не выходит? CTRL-C CTRL-V?
13 сен 11, 14:28    [11269503]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Apikaster
ак что мне надо поставить '31.12.'+год который в @id. И сказать что where row = '31.12.2011' к примеру. Должно получиться как то так. Но проблема что на выходит ))

Ну так сервер вам и сообщил, что у вас аргументы разного типа
Вы как себе преставляете сложение "вася"+15 ?
13 сен 11, 14:29    [11269517]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Apikaster
iljy,
Ну вот именно. В @id у меня находиться дата. И просто дни и месяцы там могут быть разными.В зависимости от дня и месяца разные данные. Так что мне надо поставить '31.12.'+год который в @id. И сказать что where row = '31.12.2011' к примеру. Должно получиться как то так. Но проблема что на выходит ))
Меня игнорируете?
И что про индексы думаете?

Какое время хранится в row? То-то!
Да и 31-го месяца не бывает
13 сен 11, 14:30    [11269529]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
Apikaster
Member

Откуда:
Сообщений: 51
iap,
прошу прощения. Я просто не очень оказывается внимателен )) Прошу не ругать ))
Мне просто надо склеить 31 число 12 месяца и определенного года с @id. И я прошу помочь.
13 сен 11, 14:43    [11269653]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Apikaster
iap,
прошу прощения. Я просто не очень оказывается внимателен )) Прошу не ругать ))
Мне просто надо склеить 31 число 12 месяца и определенного года с @id. И я прошу помочь.
Судя по приведённому в первом сообщении запросу,
Вам НЕ НАДО "склеить 31 число 12 месяца и определенного года с @id"
Собственно, об этом и речь. 11269272
13 сен 11, 14:55    [11269795]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
Apikaster
iap,
прошу прощения. Я просто не очень оказывается внимателен )) Прошу не ругать ))
Мне просто надо склеить 31 число 12 месяца и определенного года с @id. И я прошу помочь.
Судя по приведённому в первом сообщении запросу,
Вам НЕ НАДО "склеить 31 число 12 месяца и определенного года с @id"
Собственно, об этом и речь. 11269272
То есть Ваша дата должна быть больше или равна 0 ч. заданной даты и меньше 0 ч. даты, большей заданной на 1 сутки.
В данном случае это 31 декабря
13 сен 11, 14:58    [11269811]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
Apikaster
Member

Откуда:
Сообщений: 51
iap,
Я вот щас написал кое что. И она у меня заработала.
row=cast(('31.12.'+cast(YEAR(@perDEnd)-1 as varchar(4)))as datetime)

но теперь вопрос стал в следующем. Это немецкий формат. А чтобы поддерживался весь формат. это надо делать конверт? Или есть функция которая возвращает конец года? или начало, чтобы отминусовать 1?
13 сен 11, 15:42    [11270237]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Apikaster,

вы читать умеете?
13 сен 11, 15:47    [11270281]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
Apikaster
Member

Откуда:
Сообщений: 51
iljy,
Прошу прощения. :). Следующий вопрос. А что если надо просто оставить те даты. День и месяц и просто на год ранее -1 от года ))
13 сен 11, 17:24    [11271147]     Ответить | Цитировать Сообщить модератору
 Re: Как склейить varchar с int, datetime ?  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
Apikaster
Следующий вопрос. А что если надо просто оставить те даты. День и месяц и просто на год ранее -1 от года ))


FAQ->BOL->функция dateadd().
13 сен 11, 17:53    [11271390]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить