MS SQL 2005 не воспринимает дату в запросе
От: Ilviann Zed Россия http://neyro.me
Дата: 19.12.08 10:17
Оценка:
Есть одна большая (но жутко криво спроектированная) база данных под управлением MS SQL Server 2005.
Есть таблица с несколькими полями типа DateTime. При попытке вставить данные запросом получаю ошибку:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
The statement has been terminated.


Пробовал разные форматы даты, пробовал подстановку Cast и Convert — всегда тот же результат.
К таблице привязан триггер на вставку данных, он тоже в одном месте правит часть полей с датой, подставляя значения из функции:
convert(varchar(30),GetDate(),20)


Клиент для базы написан на Delphi, общается с базой через ADO компоненты — вставляет данные без проблем (исходников нет — софт не мой).
Вставка данных вручную через MSSQL Server Management Studio — вываливается с той же ошибкой.
Маленькая самописная прога на C#, которая обращается к базе используя SQLConnection + SQLCommand (пробовал и просто запрос, и подстановку параметров) — вываливается с ошибкой.

В той же базе сделал простую таблицу вида
CREATE TABLE [some_table] ([some_field] DATETIME)

— в нее данные вставляются без проблем, SQL сервер нормально распознает тучу форматов даты.

Проблема возникла дня три назад, до этого все запросы проходили нормально. За это время конфигурация сервера не изменялась. Откатить базу с бэкапа не хочется, ибо каждый день в эту базу добавляется туева хуча данных, которая нигде больше не дублируется.
Re: MS SQL 2005 не воспринимает дату в запросе
От: vmpire Россия  
Дата: 19.12.08 12:26
Оценка:
Здравствуйте, Ilviann Zed, Вы писали:

IZ>
IZ>The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
IZ>The statement has been terminated.
IZ>

каждый день в эту базу добавляется туева хуча данных, которая нигде больше не дублируется.
А какую именно дату Вы подставляете? Похоже, она и правда не вписывается в диапазон.
Запрос можно посмотреть через профайлер, если нужно.
Re[2]: MS SQL 2005 не воспринимает дату в запросе
От: Ilviann Zed Россия http://neyro.me
Дата: 19.12.08 13:34
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Здравствуйте, Ilviann Zed, Вы писали:


IZ>>
IZ>>The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
IZ>>The statement has been terminated.
IZ>>

V>каждый день в эту базу добавляется туева хуча данных, которая нигде больше не дублируется.
V>А какую именно дату Вы подставляете? Похоже, она и правда не вписывается в диапазон.
V>Запрос можно посмотреть через профайлер, если нужно.
Диапазон вводимых дат триггером не ограничивается. Часть проблемы в том что несколько дней назад этой проблемы просто не было.
Re[2]: MS SQL 2005 не воспринимает дату в запросе
От: Ilviann Zed Россия http://neyro.me
Дата: 19.12.08 13:37
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Здравствуйте, Ilviann Zed, Вы писали:


IZ>>
IZ>>The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
IZ>>The statement has been terminated.
IZ>>

V>каждый день в эту базу добавляется туева хуча данных, которая нигде больше не дублируется.
V>А какую именно дату Вы подставляете? Похоже, она и правда не вписывается в диапазон.
V>Запрос можно посмотреть через профайлер, если нужно.
Пробовал вбивать и в формате dd.mm.yyyy и в mm.dd.yyyy и в yyyymmdd и в yyyy.mm.dd hh:nn:ss и SET DATEFORMAT менял. Даже ради теста перепробовал разные даты, как в прошлом, так и в будущем. Результат один и тот же.
Re[3]: MS SQL 2005 не воспринимает дату в запросе
От: vmpire Россия  
Дата: 19.12.08 13:54
Оценка:
Здравствуйте, Ilviann Zed, Вы писали:

IZ>Здравствуйте, vmpire, Вы писали:


V>>Здравствуйте, Ilviann Zed, Вы писали:


IZ>>>
IZ>>>The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
IZ>>>The statement has been terminated.
IZ>>>

V>>каждый день в эту базу добавляется туева хуча данных, которая нигде больше не дублируется.
V>>А какую именно дату Вы подставляете? Похоже, она и правда не вписывается в диапазон.
V>>Запрос можно посмотреть через профайлер, если нужно.
IZ>Диапазон вводимых дат триггером не ограничивается. Часть проблемы в том что несколько дней назад этой проблемы просто не было.
Вы можете найти конкретную строчку, которая падает, найти значение на котором она падает и запостить это всё сюда?
Re[3]: MS SQL 2005 не воспринимает дату в запросе
От: vmpire Россия  
Дата: 19.12.08 13:55
Оценка:
Здравствуйте, Ilviann Zed, Вы писали:

IZ>Здравствуйте, vmpire, Вы писали:


V>>Здравствуйте, Ilviann Zed, Вы писали:


IZ>>>
IZ>>>The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
IZ>>>The statement has been terminated.
IZ>>>

V>>каждый день в эту базу добавляется туева хуча данных, которая нигде больше не дублируется.
V>>А какую именно дату Вы подставляете? Похоже, она и правда не вписывается в диапазон.
V>>Запрос можно посмотреть через профайлер, если нужно.
IZ>Пробовал вбивать и в формате dd.mm.yyyy и в mm.dd.yyyy и в yyyymmdd и в yyyy.mm.dd hh:nn:ss и SET DATEFORMAT менял. Даже ради теста перепробовал разные даты, как в прошлом, так и в будущем. Результат один и тот же.
Попробуйте стандартный ISO-шный формат: yyyy-MM-ddThh:mm:ss
Re: MS SQL 2005 не воспринимает дату в запросе
От: MasterZiv СССР  
Дата: 20.12.08 13:37
Оценка:
Ilviann Zed пишет:

//http://www.sql.ru/faq/faq_topic.aspx?fid=109
//http://www.sql.ru/faq/faq_topic.aspx?fid=300

Второе — про ASE, но тоже может быть применено и к MSSQL частично.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: MS SQL 2005 не воспринимает дату в запросе
От: Ilviann Zed Россия http://neyro.me
Дата: 22.12.08 07:49
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Попробуйте стандартный ISO-шный формат: yyyy-MM-ddThh:mm:ss


Тоже не работает.
Re[5]: MS SQL 2005 не воспринимает дату в запросе
От: vmpire Россия  
Дата: 22.12.08 08:13
Оценка:
Здравствуйте, Ilviann Zed, Вы писали:

IZ>Здравствуйте, vmpire, Вы писали:


V>>Попробуйте стандартный ISO-шный формат: yyyy-MM-ddThh:mm:ss


IZ>Тоже не работает.

Тогда ответьте на ранее заданный вопрос
"найти конкретную строчку, которая падает, найти значение на котором она падает и запостить это всё сюда?"
И приведите, наконец,значение, которое не конвертируется из-за ошибки, мы же Вашего компьютера не видим
Re[2]: MS SQL 2005 не воспринимает дату в запросе
От: Ilviann Zed Россия http://neyro.me
Дата: 22.12.08 08:33
Оценка:
Здравствуйте, vmpire, Вы писали:

Проблема где-то в триггере. Необходимые мне действия выполнил тупо отключив его на время. Придется теперь сидеть и разбираться где там ошибки, ибо для триггера который по логике просто должен проверять наличие данных в родительских таблицах — там слишком много написано.
Re[6]: MS SQL 2005 не воспринимает дату в запросе
От: Ilviann Zed Россия http://neyro.me
Дата: 22.12.08 08:36
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Здравствуйте, Ilviann Zed, Вы писали:


IZ>>Здравствуйте, vmpire, Вы писали:


V>>>Попробуйте стандартный ISO-шный формат: yyyy-MM-ddThh:mm:ss


IZ>>Тоже не работает.

V>Тогда ответьте на ранее заданный вопрос
V>"найти конкретную строчку, которая падает, найти значение на котором она падает и запостить это всё сюда?"
V>И приведите, наконец,значение, которое не конвертируется из-за ошибки, мы же Вашего компьютера не видим

Значение — 1 декабря 2008 года.
Пробовал вбивать как
Ни одним из вариантов не добавлялось.
Re[5]: MS SQL 2005 не воспринимает дату в запросе
От: DmitryV Россия  
Дата: 22.12.08 08:38
Оценка:
Здравствуйте, Ilviann Zed, Вы писали:

IZ>Здравствуйте, vmpire, Вы писали:


V>>Попробуйте стандартный ISO-шный формат: yyyy-MM-ddThh:mm:ss


IZ>Тоже не работает.


Ну так может Вы, наконец, покажете скрипт таблицы, примеры запросов, и уж совсем хорошо — вытащенный из профайлера запрос от программы?
С уважением
Re[7]: MS SQL 2005 не воспринимает дату в запросе
От: vmpire Россия  
Дата: 22.12.08 08:59
Оценка:
Здравствуйте, Ilviann Zed, Вы писали:


IZ>Значение — 1 декабря 2008 года.

IZ>Пробовал вбивать как
IZ> IZ>Ни одним из вариантов не добавлялось.
Теперь информации почти достаточно. Похоже, проблема действительно в коде триггера. Если Вы его приведёте, то, можно вместе подумать, куда копать дальше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.