Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

Откуда:
Сообщений: 17
Добрый день.
Совсем недавно начал использовать MSSQL, установил сразу 2, на одном экспериментирую, на другом пускаю в работу.
Так вот, пишу на Delphi XE, для связи использую ADO, все работает прекрастно, я доволен, кроме одной вещи.
Есть таблица "PA" в ней есть поле "DataS" оно nvarchar(10) хранит дату, я сформировал SQL запрос для поиска записей в промежутке времени между датами:
DM.QPA.close;
DM.QPA.SQL.Clear;
DM.QPA.SQL.add(' select * from PA');
DM.QPA.SQL.add('Where (((CONVERT(DateTime, DataS,104)) >= :f) and ((CONVERT(DateTime,DataS,104)) <= :s))');
DM.QPA.Prepared;
DM.QPA.Parameters.ParamByName('f').Value:=DateTimePicker3.Date;
DM.QPA.Parameters.ParamByName('s').Value:=DateTimePicker4.Date;
DM.QPA.Open;
Даный запрос на эксперементальном сервере работает как часики, но на рабочем сервере выдает ошибку:

Syntax error converting datetime from character string

Через Query Analyzer игрался не помогло, профайлером смотрел, данные на оба сервера идут одинаковые.

таблицы на обоих серверах идентичны, проверял наверное десяток раз, ПОМОГИТЕ РАЗОБРАТЬСЯ ПОЖАЛУЙСТА!!!
19 июн 13, 15:50    [14454903]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31432
Евгений Joni User
Syntax error converting datetime from character string
Строка в поле DataS не соответствует формату 104
Евгений Joni User
таблицы на обоих серверах идентичны, проверял наверное десяток раз
Достаточно проверить один раз, десяток раз уже подозрительно: наверное, проверка не точная.
19 июн 13, 15:55    [14454962]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
edyaN
Member

Откуда:
Сообщений: 185
проблема скорее всего в настройках соединения. сравните установки логина на обоих серверах, а именно язык по умолчанию.

зачем хранить дату в nvarchar(10), если есть другие, более подходящие форматы?
19 июн 13, 15:59    [14454986]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

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

01.11.2012. говорю же на экспериментальном все работает нормально. Таблицы в экспериментальный сервер переносил из основного, так что все поля одинаковые
19 июн 13, 16:03    [14455028]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

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

По умолчанию язык English. уже не переделаю всю таблицу под другой тип, много записей уже в ней. Самое интересное, что в таблице есть еще одно поле с датой, такого же типа и размера, экспериментировал запрос над ним, все работает на ура...что с этим полем не могу понять...
19 июн 13, 16:06    [14455050]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Из профайлера запрос берите, ошибка же не с неба валится а на конктерном запросе.
19 июн 13, 16:13    [14455081]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
ROLpogo
Member

Откуда: Реутов
Сообщений: 216
Евгений Joni User
edyaN,

По умолчанию язык English. уже не переделаю всю таблицу под другой тип, много записей уже в ней. Самое интересное, что в таблице есть еще одно поле с датой, такого же типа и размера, экспериментировал запрос над ним, все работает на ура...что с этим полем не могу понять...


Ошибка возникает, когда сервер день пытается преобразовать в месяц и наоборот. Если дата 13.01.2013, то на одном сервере она воспринимается как 13 января, а на втором как первое задекабря. Проще передавать дату в формате '20131231'. Такой формат всегда воспринимается как yyyymmdd.
19 июн 13, 16:39    [14455254]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
Евгений Joni User
Есть таблица "PA" в ней есть поле "DataS" оно nvarchar(10) хранит дату
Дату надо хранить как дату, а не как строку -- проблем тогда будет гораздо меньше.
19 июн 13, 16:58    [14455361]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

Откуда:
Сообщений: 17
ROLpogo
Евгений Joni User
edyaN,

По умолчанию язык English. уже не переделаю всю таблицу под другой тип, много записей уже в ней. Самое интересное, что в таблице есть еще одно поле с датой, такого же типа и размера, экспериментировал запрос над ним, все работает на ура...что с этим полем не могу понять...


Ошибка возникает, когда сервер день пытается преобразовать в месяц и наоборот. Если дата 13.01.2013, то на одном сервере она воспринимается как 13 января, а на втором как первое задекабря. Проще передавать дату в формате '20131231'. Такой формат всегда воспринимается как yyyymmdd.


не подскажете как прямо указать программе, чтоб она использовала этот формат для передачи?
19 июн 13, 16:58    [14455365]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

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

все даты в этой таблице не люди вносят, она выгребается из файла Excel, который в свою очередь формируется другой программой и там она уже в строчном варианте, записей очень много, каждую исправлять не реально...
19 июн 13, 17:04    [14455396]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Евгений Joni User
invm,
все даты в этой таблице не люди вносят, она выгребается из файла Excel, который в свою очередь формируется другой программой и там она уже в строчном варианте, записей очень много, каждую исправлять не реально...

Это не повод делать через жо...
Как Вы загружаете данные в скуль? Может с этого начать...
Ну или хоть проанализируйте то гуано, что насыпалось в базу... для начала канить так select * from PA where isdate(DataS) = 1
19 июн 13, 17:19    [14455517]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

Откуда:
Сообщений: 17
ambarka_max
Из профайлера запрос берите, ошибка же не с неба валится а на конктерном запросе.



exec sp_executesql N' select * from PA
Where (((CONVERT(DateTime, DataS,104)) >= @P1) and ((CONVERT(DateTime,DataS,104)) <= @P2))
', N'@P1 datetime,@P2 datetime', 'Jun 19 2013 11:24:34:000AM', 'Jun 30 2013 11:24:52:000AM'
19 июн 13, 17:19    [14455518]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
isdate(DataS) = 0
19 июн 13, 17:21    [14455533]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

Откуда:
Сообщений: 17
buser
Евгений Joni User
invm,
все даты в этой таблице не люди вносят, она выгребается из файла Excel, который в свою очередь формируется другой программой и там она уже в строчном варианте, записей очень много, каждую исправлять не реально...

Это не повод делать через жо...
Как Вы загружаете данные в скуль? Может с этого начать...
Ну или хоть проанализируйте то гуано, что насыпалось в базу... для начала канить так select * from PA where isdate(DataS) = 1


Еслиб было гуано, экспериментальный сервер плевался бы тоже, а так, он прекрасно лопатит абсолютно все данные, проанализировал вашим запросом таблицу, дал 6199 записей, т.е. хотя бы что-то он мог бы отобразить...
19 июн 13, 17:24    [14455555]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
Евгений Joni User
Еслиб было гуано, экспериментальный сервер плевался бы тоже, а так, он прекрасно лопатит абсолютно все данные
1. В виду наличия у Excel'я неестественного интеллекта, или каких-то других факторов, в исходном файле таки образовалось гуано.
2. Это самое гуано перетекло в вашу таблицу.
3. В результате пп. 1 и 2 ваш запрос из стартового поста благополучно обломается.
19 июн 13, 18:03    [14455810]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

Откуда:
Сообщений: 17
invm
Евгений Joni User
Еслиб было гуано, экспериментальный сервер плевался бы тоже, а так, он прекрасно лопатит абсолютно все данные
1. В виду наличия у Excel'я неестественного интеллекта, или каких-то других факторов, в исходном файле таки образовалось гуано.
2. Это самое гуано перетекло в вашу таблицу.
3. В результате пп. 1 и 2 ваш запрос из стартового поста благополучно обломается.



все записи в данном поле имеют вид "20.12.2012", кроме того, выгружаются не в сам Excel, а другой программой, в в файлы *.csv, и для редактирования не открывается, все делается на автомате, и еще раз повторюсь, если бы данные были не правильные, то экспериментальный сервер не провел бы ни одного запроса..
19 июн 13, 18:13    [14455856]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

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

у меня сложились подозрения на системные настройки серверов, или как выше было сказано, возможно не в том формате передается дата, но настройки сервера я не знаю где копать, я совсем недавно с ним работаю
19 июн 13, 18:23    [14455899]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

Откуда:
Сообщений: 17
может это что-то прояснит Server: Msg 241, Level 16, State 1, Line 1
19 июн 13, 18:41    [14455969]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
Евгений Joni User
все записи в данном поле имеют вид "20.12.2012", кроме того, выгружаются не в сам Excel, а другой программой, в в файлы *.csv, и для редактирования не открывается, все делается на автомате, и еще раз повторюсь, если бы данные были не правильные, то экспериментальный сервер не провел бы ни одного запроса..
Вам никто не вправе запретить ходить по граблям...
19 июн 13, 19:20    [14456076]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31432
Евгений Joni User
alexeyvg,

01.11.2012. говорю же на экспериментальном все работает нормально. Таблицы в экспериментальный сервер переносил из основного, так что все поля одинаковые

Евгений Joni User
не подскажете как прямо указать программе, чтоб она использовала этот формат для передачи?
В вашем запросе и так используется точно установленный формат, не зависящий от настроек - 104

Чудес не бывает, либо ошибка в другом запросе, либо там данные в другом формате.
19 июн 13, 19:22    [14456081]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31432
Евгений Joni User
может это что-то прояснит Server: Msg 241, Level 16, State 1, Line 1
Это "Ошибка преобразования даты или времени из символьной строки."
19 июн 13, 19:23    [14456083]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31432
Евгений Joni User
DM.QPA.SQL.add('Where (((CONVERT(DateTime, DataS,104)) >= :f) and ((CONVERT(DateTime,DataS,104)) <= :s))');
Кстати, надеюсь, это хоть не строки?
:f
:s
19 июн 13, 19:25    [14456086]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

Откуда:
Сообщений: 17
alexeyvg
Евгений Joni User
DM.QPA.SQL.add('Where (((CONVERT(DateTime, DataS,104)) >= :f) and ((CONVERT(DateTime,DataS,104)) <= :s))');
Кстати, надеюсь, это хоть не строки?
:f
:s


нет, не строки, это значение стандартных

DM.QPA.Parameters.ParamByName('f').Value:=DateTimePicker3.Date;
DM.QPA.Parameters.ParamByName('s').Value:=DateTimePicker4.Date;
19 июн 13, 19:29    [14456091]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

Откуда:
Сообщений: 17
Евгений Joni User,

Дело в том, что в Qery Analiz он выводит строки с нормальными значениями, но ошибку все равно выбивает

22.11.2013
22.11.2013
22.11.2013
22.11.2013
22.11.2013
22.11.2013
22.11.2013
22.11.2013
22.11.2013
19 июн 13, 19:42    [14456104]     Ответить | Цитировать Сообщить модератору
 Re: Syntax error converting datetime from character string избитая тема, но не решенная  [new]
Евгений Joni User
Member

Откуда:
Сообщений: 17
25.07.2013
25.07.2013
15.07.2013
25.07.2013
25.07.2013
25.07.2013
19 июн 13, 19:43    [14456109]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить