select-where子句会产生不同的结果

时间:2013-06-20 14:36:11

标签: sql-server-2008 tsql validation date

我在SQL Server 2008程序中得到了这个查询

insert into tableXYZ(ID, CODPROY, NOMPROY, TITOBS, OBSERVACION, RECOMENDACION, RESPUESTA, UNIDRESP, CONTACTO, FECHAEMISION, RIESGO, ULTIMAACTUALIZACION, FECHAVENCIMIENTO, ESTADO, FECHACARGATC, REGULADOR, REGULADO) 
  select 
     ID_Obs, CodigoProyecto, NombreProyecto, TituloObservacion, Incidencia, 
     Recomendacion, Respuesta, UnidadResponsable, Propietario, 
     case when isdate(FechaEmision) = 1 then CONVERT(DATETIME, FechaEmision, 103) end, 
     Riesgo, EstadoActualizacion, 
     case when isdate(FechaRevisada) = 1 then (CONVERT(DATETIME, FechaRevisada, 103)) else (case when isdate(FechaEstimada) = 1 then CONVERT(DATETIME,FechaEstimada,105) end) end,
     Estado, 
     case when isdate(FechaCargaTC) = 1 then CONVERT(DATETIME, FechaCargaTC, 103) end,
     Grupo, 'BCPPE' 
  from 
     @myTableType 
  where 
     GRUPO <> '467' and GRUPO <> '912' and GRUPO <> '910' and GRUPO <> ''

正如您所看到的,此查询有许多强制转换方法,问题是这句话的结果在两个用户之间是如此不同。你能给我一些线索吗?

PD:看看这部分:

case when isdate(FechaRevisada) = 1 then (CONVERT(DATETIME, FechaRevisada, 103)) 
     else (case when isdate(FechaEstimada) = 1 then CONVERT(DATETIME, FechaEstimada, 105) end) 
end

这部分查询适用于我,但不适合我的伴侣。

0 个答案:

没有答案