Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите плз: Error converting data type varchar to float  [new]
abrashka
Member

Откуда:
Сообщений: 524
День добрый!
Помогите с запросом плиз.
Имеется VIEW: v_test
в котором одно из полей Date datetime, скажем из таблицы t_test (это поле datetime и в таблице)

Запрос типа:
select * from v_test
where [Date]>GETDATE()

выдает ошибку:

Msg 8114, Level 16, State 5, Line 2
Error converting data type varchar to float.

Пробовал конвертировать в разные форматы- та же ошибка :(

В чем может быть проблема?

П.С. имеющуюся проблему я упростил для наглядности, на самом деле нужно выбрать все данные за последнюю неделю от начала седьмого дня, т.е. если сегодня 26/03/2012, то поле DATE должно быть больше 2012-03-19 00-00-00-000, должен быть фильтр:
WHERE Date > DATEADD(d, - 7, dateadd(dd, datediff(dd,0, getdate()), 0))

как я понимаю, проблема не в фильтре, а в примере выше.

Спасибо!
26 мар 12, 15:00    [12314626]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31993
abrashka
Запрос типа:
select * from v_test
where [Date]>GETDATE()


выдает ошибку:

Msg 8114, Level 16, State 5, Line 2
Error converting data type varchar to float.
А так?
select [Date] from v_test
where [Date]>GETDATE()
26 мар 12, 15:02    [12314644]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
abrashka,

текст view покажите
26 мар 12, 15:10    [12314722]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
netivan
Member

Откуда:
Сообщений: 8768
почему CAST(*** as DATE) нельзя?
26 мар 12, 15:22    [12314804]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
abrashka
Member

Откуда:
Сообщений: 524
alexeyvg
abrashka
Запрос типа:
select * from v_test
where [Date]>GETDATE()


выдает ошибку:

Msg 8114, Level 16, State 5, Line 2
Error converting data type varchar to float.
А так?
select [Date] from v_test
where [Date]>GETDATE()

И так, такая же ошибка
26 мар 12, 15:31    [12314869]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
abrashka
Member

Откуда:
Сообщений: 524
iap
abrashka,

текст view покажите

Вот:
CREATE VIEW [dbo].[View_Cognos_Parameters_Track]
AS
SELECT DISTINCT 
                      TOP 100 PERCENT dbo.tblXWIPStep.RouteID AS Route, dbo.tblXWIPStep.ProductID, dbo.tblPWipSWipXpropertyDefinitions.WIPID, 
                      dbo.tblPData_WipStepProduct.XpropertyID AS ParameterID_old, dbo.tblPData_WipStepProduct.[TimeStamp] AS [Date], 
                      (case when isnumeric(dbo.tblPData_WipStepProduct.[Value])=1 then cast(dbo.tblPData_WipStepProduct.[Value] as float) else 0 end)AS ActualValue, dbo.tblPWipSWipXpropertyDefinitions.DefaultValue AS TargetValue, 
                      dbo.tblPWipSWipXpropertyDefinitions.MinValue AS MinimumValue, dbo.tblPWipSWipXpropertyDefinitions.MaxValue AS MaximumValue, 
                      dbo.Parmeters_Union.link AS ParameterID, dbo.tblXWIPStep.WIPStepUID, dbo.tblXData_Equip.[Value]
FROM         dbo.tblPData_WipStepProduct INNER JOIN
                      dbo.tblXWIPStep ON dbo.tblPData_WipStepProduct.WIPStepUID = dbo.tblXWIPStep.WIPStepUID INNER JOIN
                      dbo.tblPWipSWipXpropertyDefinitions ON dbo.tblXWIPStep.WIPID = dbo.tblPWipSWipXpropertyDefinitions.WIPID AND 
                      dbo.tblXWIPStep.WipSubID = dbo.tblPWipSWipXpropertyDefinitions.WIPSubID AND 
                      dbo.tblXWIPStep.StepID = dbo.tblPWipSWipXpropertyDefinitions.StepID AND 
                      dbo.tblPData_WipStepProduct.XpropertyID = dbo.tblPWipSWipXpropertyDefinitions.XpropertyID INNER JOIN
                      dbo.tblXPropertyDefinitions ON dbo.tblPWipSWipXpropertyDefinitions.XpropertyUID = dbo.tblXPropertyDefinitions.XPropertyUID INNER JOIN
                      dbo.tblXCategories ON dbo.tblXPropertyDefinitions.CategoryUID = dbo.tblXCategories.CategoryUID INNER JOIN
                      dbo.Parmeters_Union ON dbo.tblPData_WipStepProduct.XpropertyID = dbo.Parmeters_Union.tnuvot INNER JOIN
                      dbo.vPlanMate_RouteMachine ON dbo.tblXWIPStep.RouteID = dbo.vPlanMate_RouteMachine.RouteID INNER JOIN
                      dbo.tblXData_Equip ON dbo.vPlanMate_RouteMachine.EquipmentID = dbo.tblXData_Equip.EquipmentID
WHERE     (dbo.tblXCategories.CategoryID = 'Production_Parameters') AND (dbo.tblXData_Equip.XPropertyID = 'Eshbel_Equipment_Code')
ORDER BY dbo.tblPData_WipStepProduct.[TimeStamp]


Поле [TimeStamp] в таблице tblPData_WipStepProduct является datetime
26 мар 12, 15:33    [12314886]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
netivan
почему CAST(*** as DATE) нельзя?

А подумать ?

Только для версий выше 2005.

К тому же явная ошибка - в поле текстовая строка с не верным форматом для float/
26 мар 12, 15:34    [12314899]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
netivan
Member

Откуда:
Сообщений: 8768
Ken@t,

да, забыл про версии. Кстати что стоит в региональных настройках пользователя?
26 мар 12, 15:35    [12314916]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
abrashka
Member

Откуда:
Сообщений: 524
netivan
почему CAST(*** as DATE) нельзя?

что есть CAST(*** as DATE)?
Пробовал:
where 
cast([Date] as datetime)<cast(GETDATE() as datetime)

Та же ошибка, при чем если делаю:

select cast([Date] as datetime) from View_Cognos_Parameters_Track

без фильтра, то ошибку не получаю.
26 мар 12, 15:37    [12314931]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
cast([Value] as float)
Guest
Проблема тут
dbo.tblPData_WipStepProduct.[Value]



вот такой запрос свалится

select (case when isnumeric([Value])=1 then cast([Value] as float) else 0 end)
from dbo.tblPData_WipStepProduct
26 мар 12, 15:37    [12314934]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Какого типа dbo.tblPData_WipStepProduct.[Value]?
По-Вашему, isnumeric(dbo.tblPData_WipStepProduct.[Value])=1 гарантирует конвертируемость во FLOAT, да?
26 мар 12, 15:38    [12314940]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
abrashka
Member

Откуда:
Сообщений: 524
iap
Какого типа dbo.tblPData_WipStepProduct.[Value]?
По-Вашему, isnumeric(dbo.tblPData_WipStepProduct.[Value])=1 гарантирует конвертируемость во FLOAT, да?

Не я писал VIEW, но судя по всему да:"isnumeric(dbo.tblPData_WipStepProduct.[Value])=1 гарантирует конвертируемость во FLOAT"
И таки в этом проблема, создал похожее VIEW без поля VALUE и запрос заработал с фильтром.
В чем тогда проблема в этом коде:
                      (case when isnumeric(dbo.tblPData_WipStepProduct.[Value])=1 
                      then cast(dbo.tblPData_WipStepProduct.[Value] as float) else 0 end)AS ActualValue, 

?
26 мар 12, 15:59    [12315182]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
abrashka, проблема в том, что
isnumeric(dbo.tblPData_WipStepProduct.[Value])=1
как раз не гарантирует конвертируемость во float
26 мар 12, 16:10    [12315300]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
invm
abrashka, проблема в том, что
isnumeric(dbo.tblPData_WipStepProduct.[Value])=1
как раз не гарантирует конвертируемость во float


iap решение прдлагал isnumeric(pole)=1, а convert(float,pole) выдает ошибку.
26 мар 12, 16:15    [12315344]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31993
invm
abrashka, проблема в том, что
isnumeric(dbo.tblPData_WipStepProduct.[Value])=1

как раз не гарантирует конвертируемость во float
Непонятно, почему без фильтра не валится...

Хотя понятно, видимо, с фильтром план получается такой, что выбирается всё из tblPData_WipStepProduct
26 мар 12, 16:19    [12315398]     Ответить | Цитировать Сообщить модератору
 Re: помогите плз: Error converting data type varchar to float  [new]
abrashka
Member

Откуда:
Сообщений: 524
Ken@t,
Спасибо огромное, сделал проверку "флоутосовместимости" по ссылке на совет iap и все заработало, ошибку понял и осознал, всем спасибо!
26 мар 12, 17:19    [12316056]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить