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

Откуда:
Сообщений: 85
Приходит дата вида @DateBegin = '01.05.2009'
Ее нужно сравнить с датой вида CON.DateConfirm = '2009.05.01'

код
...
@DateBegin datetime,
@DateEnd datetime,
...

Генерю динамический запрос для выполнения условия
...
SELECT @SQLPlanFact =
CASE

WHEN @PlanFact = 2 THEN '(CON.DateConfirm BETWEEN '
+ convert(varchar(20), @DateBegin, 120) + ' AND ' + convert(varchar(20), @DateEnd, 120) + ')'
...


Выполняю
...
WHERE CSUB.SubcontoId = ' + CONVERT(varchar, @SubcontoId) +
' AND CSUB.SubcontoValueId = ' + CONVERT(varchar, @SubcontoValueId) +
' AND AC1.AccountValutId = ' + CONVERT(varchar, @ValutId) +
' AND ' + @SQLPlanFact + '
...

Ошибка

Conversion failed when converting datetime from character string.

Внимание вопрос! Как сделать правильное сравнение?

'(CON.DateConfirm BETWEEN '
+ convert(varchar(20), @DateBegin, 120) + ' AND ' + convert(varchar(20), @DateEnd, 120) + ')'
28 май 09, 20:32    [7241847]     Ответить | Цитировать Сообщить модератору
 Re: ошибка конвертации из даты в страку  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Какого типа поле CON.DateConfirm?
28 май 09, 20:39    [7241862]     Ответить | Цитировать Сообщить модератору
 Re: ошибка конвертации из даты в страку  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Вместо 120 -> 112 !
И в одинарных кавычках!
'(CON.DateConfirm BETWEEN ''' 
+ convert(varchar(20), @DateBegin, 112) + ''' AND ''' + convert(varchar(20), @DateEnd, 112) + ''')' 
28 май 09, 21:28    [7241937]     Ответить | Цитировать Сообщить модератору
 Re: ошибка конвертации из даты в страку  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
Вместо 120 -> 112 !
И в одинарных кавычках!
'(CON.DateConfirm BETWEEN ''' 
+ convert(varchar(20), @DateBegin, 112) + ''' AND ''' + convert(varchar(20), @DateEnd, 112) + ''')' 
Точнее не 112, а 126 (потому что 120-й со временем)
'(CON.DateConfirm BETWEEN ''' 
+ convert(varchar(20), @DateBegin, 126) + ''' AND ''' + convert(varchar(20), @DateEnd, 126) + ''')' 
28 май 09, 21:46    [7241975]     Ответить | Цитировать Сообщить модератору
 Re: ошибка конвертации из даты в страку  [new]
sbabiv
Member

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

спасибо
все работает!

на будущее дайте пожалуйста ссылку на форматы! (я про 112, 104, 108, 120 .... т.д.)
29 май 09, 12:33    [7243686]     Ответить | Цитировать Сообщить модератору
 Re: ошибка конвертации из даты в страку  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
sbabiv
на будущее дайте пожалуйста ссылку на форматы! (я про 112, 104, 108, 120 .... т.д.)
Окройте в BOL статью по CONVERT.
29 май 09, 12:42    [7243737]     Ответить | Цитировать Сообщить модератору
 Re: ошибка конвертации из даты в страку  [new]
el Pueblo
Member

Откуда: Харьков
Сообщений: 202
sbabiv
iap,

спасибо
все работает!

на будущее дайте пожалуйста ссылку на форматы! (я про 112, 104, 108, 120 .... т.д.)


Cast and Convert
29 май 09, 12:43    [7243743]     Ответить | Цитировать Сообщить модератору
 Re: ошибка конвертации из даты в страку  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
sbabiv
на будущее дайте пожалуйста ссылку на форматы! (я про 112, 104, 108, 120 .... т.д.)
Функции CAST и CONVERT (Transact-SQL)
29 май 09, 12:44    [7243748]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить