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

Откуда: Москва
Сообщений: 470
запрос
SELECT     TOP 100 PERCENT dbo.VehicleTime.VTVehicle, dbo.VehicleTime.VTTime, dbo.VehicleTime.VTDate, CONVERT(datetime, 
                      dbo.VehicleTime.VTDate + ' ' + dbo.Times.TName) AS DoneDateTime
FROM         dbo.VehicleTime INNER JOIN
                      dbo.Times ON dbo.VehicleTime.VTTime = dbo.Times.TId
сам по себе работает, а когда вставляю его как починенный запрос и включаю на вывод поле DoneDateTime выдает ошибку
Syntax error converting character string to smalldatetime data type
5 авг 09, 17:47    [7502371]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
style1
когда вставляю его как починенный запрос
куда, в какой-то другой запрос? увидеть его текст можно?
5 авг 09, 17:52    [7502419]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
Glory
Member

Откуда:
Сообщений: 104760
И почему в CONVERT не задан третий аргумент ?
Вы предлагаете серверу самостоятельно угадывать в каком формате у вас там символьная строка ?
5 авг 09, 17:53    [7502424]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
style1
Member

Откуда: Москва
Сообщений: 470
Здесь поле z2.DDatTim

SELECT     q.MhId, q.ClDate, dbo.Times.TName, dbo.VehicleTimeWorkshop.VTWVehicle, q.dat_not_wrk + 1 AS not_wrk, z2.VTVehicle, z2.DDatTim
FROM         (SELECT     z.MhId, z.ClDate, z.TId, 1 AS dat_not_wrk
                       FROM          (SELECT     TOP 100 PERCENT dbo.vwMehanikTimes__body.MhId, dbo.Calend.ClDate, dbo.vwMehanikTimes__body.TId
                                               FROM          dbo.Calend CROSS JOIN
                                                                      dbo.vwMehanikTimes__body
                                               WHERE      (dbo.Calend.ClDate >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0)) AND 
                                                                      (dbo.Calend.ClDate <= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 2, 0) - 1)
                                               ORDER BY dbo.vwMehanikTimes__body.MhId, dbo.Calend.ClDate, dbo.vwMehanikTimes__body.TId) z LEFT OUTER JOIN
                                                  (SELECT     dbo.Mehanik.MhId, dbo.MehanikDate.MhDDate, dbo.vwMehanikTimes__body.TId
                                                    FROM          dbo.Mehanik INNER JOIN
                                                                           dbo.MehanikDate ON dbo.Mehanik.MhId = dbo.MehanikDate.MhDMehanik INNER JOIN
                                                                           dbo.vwMehanikTimes__body ON dbo.MehanikDate.MhDMehanik = dbo.vwMehanikTimes__body.MhId
                                                    WHERE      (dbo.vwMehanikTimes__body.MhTId IS NULL)) z1 ON z.TId = z1.TId AND z.ClDate = z1.MhDDate AND z.MhId = z1.MhId) 
                      q INNER JOIN
                      dbo.Times ON q.TId = dbo.Times.TId LEFT OUTER JOIN
                          (SELECT     TOP 100 PERCENT dbo.VehicleTime.VTVehicle, dbo.VehicleTime.VTTime, dbo.VehicleTime.VTDate, CONVERT(datetime, 
                                                   dbo.VehicleTime.VTDate + ' ' + dbo.Times.TName) AS DDatTim
                            FROM          dbo.VehicleTime INNER JOIN
                                                   dbo.Times ON dbo.VehicleTime.VTTime = dbo.Times.TId) z2 ON q.TId = z2.VTTime AND q.ClDate = z2.VTDate LEFT OUTER JOIN
                      dbo.MehanikTimes ON q.MhId = dbo.MehanikTimes.MhTMehanik AND q.TId = dbo.MehanikTimes.MhTTime LEFT OUTER JOIN
                      dbo.VehicleTimeWorkshop ON q.MhId = dbo.VehicleTimeWorkshop.VTWMehanik AND q.TId = dbo.VehicleTimeWorkshop.VTWTime AND 
                      q.ClDate = dbo.VehicleTimeWorkshop.VTWDate
WHERE     (dbo.Times.TName <> N'_____')
5 авг 09, 17:55    [7502441]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
style1
Member

Откуда: Москва
Сообщений: 470
Glory
И почему в CONVERT не задан третий аргумент ?
Вы предлагаете серверу самостоятельно угадывать в каком формате у вас там символьная строка ?

CONVERT(datetime, dbo.VehicleTime.VTDate + ' ' + dbo.Times.TName, 113)
ту же ошибку выдает
5 авг 09, 17:59    [7502477]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Попробуйте заменить это
style1
CONVERT(datetime, dbo.VehicleTime.VTDate + ' ' + dbo.Times.TName)
на это
dbo.VehicleTime.VTDate + ' ' + dbo.Times.TName
другими словами, выдать просто текст

И посмотреть, что же там за данные
5 авг 09, 18:01    [7502486]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
Glory
Member

Откуда:
Сообщений: 104760
style1
Glory
И почему в CONVERT не задан третий аргумент ?
Вы предлагаете серверу самостоятельно угадывать в каком формате у вас там символьная строка ?

CONVERT(datetime, dbo.VehicleTime.VTDate + ' ' + dbo.Times.TName, 113)
ту же ошибку выдает

Значит ошибка связана с другим полем, в котором вы зачем то храните дату в символьном виде
5 авг 09, 18:02    [7502496]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
style1
Member

Откуда: Москва
Сообщений: 470
Паганель,

даже без convert выдает туже ошибку
5 авг 09, 18:05    [7502507]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
а без вставки "починенного запроса" основной запрос работает?
5 авг 09, 18:08    [7502515]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
style1
Member

Откуда: Москва
Сообщений: 470
Паганель,

да работает...
вот так в подчиненном заработало
CONVERT(datetime, dbo.VehicleTime.VTDate, 104) + ' ' + CONVERT(datetime, dbo.Times.TName, 108)
5 авг 09, 18:08    [7502517]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
style1
Member

Откуда: Москва
Сообщений: 470
Паганель, Glory,
спасибо за помощь
5 авг 09, 18:10    [7502525]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
хорошо
передайте привет тому, чья это идея - хранить дату и время в Вашей БД не в виде даты и времени, а в виде текста
5 авг 09, 18:11    [7502528]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
style1
Member

Откуда: Москва
Сообщений: 470
опять всплыла проблема, выдает эту ошибку я так понимаю на нулевые значения даты и времени... запрос заработает когда я фильтрую собираемое выражение Not Null по дате и времени, когда выключаю фильтр выскакивает ошибка... как бороться?
5 авг 09, 18:43    [7502662]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
style1
как бороться?
прекратить хранить дату и время в текстовом виде
храните дату и время в виде даты и времени, и ничего не придется конвертировать
5 авг 09, 18:49    [7502690]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
style1
Member

Откуда: Москва
Сообщений: 470
Паганель
style1
как бороться?
прекратить хранить дату и время в текстовом виде
храните дату и время в виде даты и времени, и ничего не придется конвертировать

так уже не получится... как можно обойти проблему с существующей ситуацией?
5 авг 09, 18:59    [7502720]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
style1
Паганель
style1
как бороться?
прекратить хранить дату и время в текстовом виде
храните дату и время в виде даты и времени, и ничего не придется конвертировать

так уже не получится... как можно обойти проблему с существующей ситуацией?

в общем случае - нет. ваш случай вполне себе общий.
5 авг 09, 19:09    [7502736]     Ответить | Цитировать Сообщить модератору
 Re: ошибка convert  [new]
step_ks
Member

Откуда:
Сообщений: 936
style1
Паганель
style1
как бороться?
прекратить хранить дату и время в текстовом виде
храните дату и время в виде даты и времени, и ничего не придется конвертировать

так уже не получится... как можно обойти проблему с существующей ситуацией?

case + isdate() внутри конверта
6 авг 09, 10:04    [7503884]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить