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

Откуда:
Сообщений: 627
Всем доброго времени суток и с наступающим!!!!
Не сочтите идиотом, почитав проблему. Суть в следуещем. Есть безобидный запрос, зашитыт в хранимку. вот фрагмент:

CREATE PROCEDURE fitness_goods_cash
@date1 datetime,
@date2 datetime
 AS

select sg.[id], sg.name_full,sg.sale_rur,sg.id_div ,
( select sum(case when g.name_good like ('Возврат%') then -g.quantity else g.quantity  end)  from sc_list_check_goods g, sc_list_checks c
 where g.id_list_check=c.id and c.date_sale>=@date1 and c.date_sale<=@date2 and c.pr_deposit='N'
       and g.id_good=sg.id and (g.discount is NULL or g.discount=0)  )  disc_1,

..........


в параметры передаются значения типа

set @date1='2009-12-10 00:00:000'
set @date2='2009-12-10 23:59:000'
(фрагмент из QA)

так вот, все отлично отрабатывает, если дата не 13-е число. Причем любого месяца. как только дата принимает значение, например
'2009-12-13 00:00:000, то выдает, что

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

Ну, о чем речь, понятно и так.
Запустил этот же запрос на другом SQL-серваке -- все отлично отработало. В чем косяк может быть? подскажите, куда копать!!!! Заранее благодарен всем ответившим!!!
30 дек 09, 13:49    [8137391]     Ответить | Цитировать Сообщить модератору
 Re: "Или лыжи не едут или..."  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
https://www.sql.ru/faq/faq_topic.aspx?fid=109
30 дек 09, 13:52    [8137414]     Ответить | Цитировать Сообщить модератору
 Re: "Или лыжи не едут или..."  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33354
Блог
вам говорят, что 13го месяца не существует, почитайте о форматах данных
30 дек 09, 13:57    [8137453]     Ответить | Цитировать Сообщить модератору
 Re: "Или лыжи не едут или..."  [new]
Bobby
Member

Откуда:
Сообщений: 627
Критик,
Это я уже понял.
Вот что помогло:

[/src]declare @date1 varchar(20)  
declare @date2 varchar(20)

set @date1='2009-12-13 00:00:000'
set @date2='2009-12-13 23:59:000'

set @date1=convert(datetime,@date1,120)
set @date2=convert(datetime,@date2,120)


махнул datetime на varchar
30 дек 09, 14:15    [8137582]     Ответить | Цитировать Сообщить модератору
 Re: "Или лыжи не едут или..."  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Критик
вам говорят, что 13го месяца не существует, почитайте о форматах данных

LOCALE_SMONTHNAME13 )
30 дек 09, 14:20    [8137614]     Ответить | Цитировать Сообщить модератору
 Re: "Или лыжи не едут или..."  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Bobby
Критик,
Это я уже понял.
Вот что помогло:

[/src]declare @date1 varchar(20)  
declare @date2 varchar(20)

set @date1='2009-12-13 00:00:000'
set @date2='2009-12-13 23:59:000'

set @date1=convert(datetime,@date1,120)
set @date2=convert(datetime,@date2,120)


махнул datetime на varchar

как вы теперь собираетесь использовать эти строки?
30 дек 09, 14:22    [8137630]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить