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

Откуда:
Сообщений: 1066
выполняю
declare @t table (s_c varchar(50),sdr datetime)
insert into @t (s_c,sdr) select '060207','Feb  2 2013  4:49PM'


на одном сервере все нормально выполняется, а на другом ошибка:
Ошибка преобразования даты или времени из символьной строки.

как сделать чтобы не было ошибки?)
5 мар 13, 12:18    [14013449]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
marvel,

Язики разные на разных серверах
5 мар 13, 12:20    [14013465]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
marvel
как сделать чтобы не было ошибки?)


использовать например функцию convert с правильными параметрами.
5 мар 13, 12:21    [14013473]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
Glory
Member

Откуда:
Сообщений: 104760
marvel
как сделать чтобы не было ошибки?)

Прочитать в хелпе про тип datetime и правила преобразование в него текстовых строк
5 мар 13, 12:21    [14013476]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
marvel
Member

Откуда:
Сообщений: 1066
WarAnt
marvel,

Язики разные на разных серверах


а как поменять язык на английский с помощью tsql ?
5 мар 13, 12:22    [14013481]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
iap
Member

Откуда: Москва
Сообщений: 46978
declare @t table (s_c varchar(50),sdr datetime)
insert into @t (s_c,sdr) select '060207','20130202 16:49:00';
declare @t table (s_c varchar(50),sdr datetime)
insert into @t (s_c,sdr) select '060207','2013-02-02T16:49:00';
declare @t table (s_c varchar(50),sdr datetime)
insert into @t (s_c,sdr) select '060207',CONVERT(DATETIME,'2013-02-02 16:49:00',120);
5 мар 13, 12:23    [14013492]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
marvel
WarAnt
marvel,

Язики разные на разных серверах


а как поменять язык на английский с помощью tsql ?


автор
set language us_english
select CONVERT(datetime,'Feb 2 2013 4:49PM',100)
5 мар 13, 12:24    [14013507]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
Glory
Member

Откуда:
Сообщений: 104760
marvel
а как поменять язык на английский с помощью tsql ?

Надо писать код, независимый от региональных настроек
5 мар 13, 12:26    [14013519]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
marvel
а как поменять язык на английский с помощью tsql ?

Вообще в SQL Server есть два английских языка ;-)
set language us_english
print datepart(weekday, 'Mar 5 2013')
print cast('2013-03-05' as datetime)

set language british
print datepart(weekday, 'Mar 5 2013')
print cast('2013-03-05' as datetime)

Changed language setting to us_english.
3
Mar 5 2013 12:00AM
Changed language setting to British.
2
May 3 2013 12:00AM
5 мар 13, 12:30    [14013547]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
iap
Member

Откуда: Москва
Сообщений: 46978
Гость333
marvel
а как поменять язык на английский с помощью tsql ?

Вообще в SQL Server есть два английских языка ;-)
set language us_english
print datepart(weekday, 'Mar 5 2013')
print cast('2013-03-05' as datetime)

set language british
print datepart(weekday, 'Mar 5 2013')
print cast('2013-03-05' as datetime)

Changed language setting to us_english.
3
Mar 5 2013 12:00AM
Changed language setting to British.
2
May 3 2013 12:00AM
us_english - это не английский! Это американский.
5 мар 13, 12:35    [14013587]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
Glory
Member

Откуда:
Сообщений: 104760
iap
us_english - это не английский! Это американский.

Американский английский, если уж совсем точно.
5 мар 13, 12:38    [14013608]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iap
us_english - это не английский! Это американский.

А british — это британский! Итого: в SQL Server нет английского языка
5 мар 13, 12:42    [14013649]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
И_Павел_С
Member

Откуда:
Сообщений: 44
Всем доброго времени!
Тоже столкнулся с этой же проблемой "Ошибка преобразования даты или времени из символьной строки." Только у меня еще пишет что то типа "старая рассадка"
Как бы корень проблемы я вроде вижу...
... имеем Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Jun 28 2012 08:36:30 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
На нем две базы, одна с уровнем совместимости 2000 (80) назовем база 1, другая 2008 (100) назовем база 2 и третья база - тестовая, точная копия базы 1.
В одной из таблиц базы 2 есть триггер на UPDATE, который при помощи инструкции MERGE пытается вставить данные в одну из таблиц базы 1, где есть столбец с типом данных DATETIME. И при попытке вставить getdate() как раз и появляется данная ошибка.
Пробовал я советы из этой темы - не помогло. Но помогло изменить уровень совместимости базы 3 на 2008 (100) и затем пересоздать таблицу.

Честно говоря, прав на изменение уровня совместимости и пересоздания таблицы в базе 1 у меня нет, поэтому обращаюсь за помощью. Что можно еще сделать? Как вставить дату?
22 май 18, 20:23    [21430429]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2979
И_Павел_С, покажите точное сообщение об ошибке.
getDate никак не может возвращать строку и ошибки там быть не должно
23 май 18, 07:12    [21430911]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
И_Павел_С
Member

Откуда:
Сообщений: 44
HandKot
покажите точное сообщение об ошибке.
getDate никак не может возвращать строку и ошибки там быть не должно

именно так и пишет
Ошибка преобразования даты или времени из символьной строки
Старая рассадка

ну именно Getdate и дает эту ошибку, так как для этого столбца оно по дефолту.
Пробовал вставлять дату фиксированную в разных форматах - не вставляется, если делать это по событию триггера.
23 май 18, 10:14    [21431201]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
И_Павел_С,

вот и ищите старую рассадку в своих триггерах.
результат getdate() имеет тип datetime по определению
23 май 18, 10:23    [21431236]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
iap
Member

Откуда: Москва
Сообщений: 46978
Стесняюсь спросить, а что такое "рассадка" применительно к серверу баз данных?
23 май 18, 10:30    [21431254]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
iap, ставлю на что-то в таком духе
 raiserror ('Старая рассадка',17,1);
23 май 18, 10:37    [21431284]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
И_Павел_С
Member

Откуда:
Сообщений: 44
Посетитель
вот и ищите старую рассадку в своих триггерах.

я вот тоже стесняюсь спросить, что это и где ее искать.
23 май 18, 10:39    [21431294]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
И_Павел_С,

а у кого вы стесняетесь спросить-то?
база у вас под рукой, текст ошибки обычно содержит еще и ее источник.
не стесняйтесь, смотрите.
23 май 18, 10:43    [21431315]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3248
И_Павел_С,

2008 же сервер, вроде?

select object_schema_name(sm.object_id), object_name(sm.object_id)
from sys.sql_modules sm
where sm.definition like N'%Старая рассадка%';

Можете еще джойн на sys.all_objects прикрутить, чтобы тип объекта был виден.
23 май 18, 10:49    [21431344]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования даты или времени из символьной строки.  [new]
И_Павел_С
Member

Откуда:
Сообщений: 44
Посетитель,
Ennor Tiegael,
проблему нашел.
Оказалось, что дело в каком то триггере. Он там эту старую рассадку давал. Но с триггер уже не я буду смотреть
Спасибо за советы. Они точно пригодятся!
23 май 18, 12:37    [21431914]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить