SQL - Error en Select

 
Vista:

Error en Select

Publicado por Hernan* (104 intervenciones) el 05/08/2005 15:36:47
La siguiente consulta me genera un desbordamiento aritmetico al convertir la expression al tipo de datos datetime.

SELECT substring(USER_HST.ACTION_DATE,1,10) as "Fecha",
USRTABLE.NAME as "Usuario" ,
USER_HST.ACTION_ID as "Accion"
FROM USER_HST, USRTABLE
WHERE ((USER_HST.USER_ID =usrtable.id ) and (substring(USER_HST.ACTION_DATE,1,10)<getdate()-30))

La columna Action_date es nvarchar(50), y la tabla User_HST tiene aprox 20000 registros.
¿Como puedo realizar esta consulta sin modificar el tipo de dato de la tabla?
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error en Select

Publicado por FRO (2 intervenciones) el 05/08/2005 16:22:32
Tienes dos forma o bien conviertes Action_date a tipo fecha o getdate() lo conviertes a tipo texto

te recomiendo que hagas los siguiente

convert( char(8),substring(USER_HST.ACTION_DATE,1,10),112) --> YYYYMMDD
CONVERT(CHAR(8),getdate()-30,112) --> YYYYMMDD

Saludos
Fernando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en Select

Publicado por Christian (38 intervenciones) el 05/08/2005 16:24:29
Claro que te va a dar eso...

Lo primero que tenes que hacer es convertir los datos al mismo tipo y luego hacer las comparaciones o las diferencias de datos

usa variables @variable as datetime...
y cast o convert para lo otro...

De todos modos deberias haber pensado de que si ibas a hacer comparaciones, deberian ser el mismo tipo de dato.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Error en Select

Publicado por Liliana (426 intervenciones) el 08/08/2005 16:37:28
Hola Hernán,
Deberás adaptar el formato del GETDATE() de la comparación, al de la fecha que tengas guardada:

SELECT substring(USER_HST.ACTION_DATE,1,10) as "Fecha", CONVERT(CHAR(10), dateadd(dd, -30, getdate()), 121),
USRTABLE.NAME as "Usuario" ,
USER_HST.ACTION_ID as "Accion"
FROM USER_HST, USRTABLE
WHERE USER_HST.USER_ID =usrtable.id
and substring(USER_HST.ACTION_DATE,1,10) < CONVERT(CHAR(10), dateadd(dd, -30, getdate()), 121)
-- 121 te da el estilo YYYY-MM-DD, asumiendo que la fecha guardada en tu tabla está así, sino, en los libros en libros en pantalla verás otros estilos que se adapten a tu necesidad.

Saludos,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar