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

Откуда:
Сообщений: 12
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

SELECT f._Code AS EMP_ID, f._Description AS EMP_NAME, d._Fld6938 AS DOC_BARCODE, d._Fld6940 AS SAP_XHDOC, d._Fld6941 AS DOC_NUM,
CASE WHEN d .[_Fld6942] = '2001.01.01' OR
d .[_Fld6942] IS NULL THEN NULL ELSE dateadd(yy, - 2000, d .[_Fld6942]) END AS DOC_DATE, CASE WHEN d .[_Fld6943] = '2001.01.01' OR
d .[_Fld6943] IS NULL THEN NULL ELSE dateadd(yy, - 2000, d .[_Fld6943]) END AS PERIOD_BEGIN, CASE WHEN d .[_Fld6944] = '2001.01.01' OR
d .[_Fld6944] IS NULL THEN NULL ELSE dateadd(yy, - 2000, d .[_Fld6944]) END AS PERIOD_END, dt._Description AS DOC_TYPE,
o._Description AS ORGANIZATION
FROM dbo._InfoRg6935 AS d WITH (NOLOCK) INNER JOIN
dbo._Reference84 AS f ON d._Fld6936RRef = f._IDRRef INNER JOIN
dbo._Reference6932 AS dt ON d._Fld6948RRef = dt._IDRRef LEFT OUTER JOIN
dbo._Reference47 AS o ON d._Fld7058 = o._Code

Ошибка:
Msg 517, Level 16, State 1, Line 2
Adding a value to a 'datetime' column caused an overflow.

Помогите, пожалуйста, найти сбойные строки!
8 дек 14, 18:15    [16967781]     Ответить | Цитировать Сообщить модератору
 Re: Как найти строки на которых вылетает запрос?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
iva77ru, минимальное значение типа datetime это 1 января 1753 года, а вы пытаетесь сразу 2000 лет отнять
8 дек 14, 18:20    [16967800]     Ответить | Цитировать Сообщить модератору
 Re: Как найти строки на которых вылетает запрос?  [new]
iva77ru
Member

Откуда:
Сообщений: 12
Все правильно. База 1С. При создании базы все даты сдвинуты на 2000.
8 дек 14, 18:30    [16967826]     Ответить | Цитировать Сообщить модератору
 Re: Как найти строки на которых вылетает запрос?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
iva77ru
Все правильно. База 1С. При создании базы все даты сдвинуты на 2000.

в этом месте вы сами можете сделать вывод что ошибочными будут все записи, в которых хотя бы одно из полей меньше чем 1 января 3753
8 дек 14, 18:34    [16967839]     Ответить | Цитировать Сообщить модератору
 Re: Как найти строки на которых вылетает запрос?  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
select * FROM dbo._InfoRg6935 d
where d .[_Fld6942] < '2001.01.01' 
    OR d .[_Fld6943] < '2001.01.01' 
    OR d .[_Fld6944] < '2001.01.01' 
9 дек 14, 08:59    [16969967]     Ответить | Цитировать Сообщить модератору
 Re: Как найти строки на которых вылетает запрос?  [new]
iva77ru
Member

Откуда:
Сообщений: 12
Спасибо "LexusR "! То, что нужно!
10 дек 14, 09:17    [16975444]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить