sql dinamico y where con fechas

15/03/2005 - 15:13 por MAbanto | Informe spam
si ejecuto esto.(@fechaini='01/03/20005')
exec ( @sql1 + ' ' +@sql2 + @fechaini )

me sale:
Servidor: mensaje 170, nivel 15, estado 1, línea 12
Línea 12: sintaxis incorrecta cerca de '1'.

o si pongo esto que me recomendaron:

exec ( @sql1 + ' ' +@sql2 + ''' + @fechaini + ''')

Servidor: mensaje 241, nivel 16, estado 1, línea 1
Error de sintaxis al convertir una cadena de caracteres a datetime.

QUE PUEDO HACER??

me sale.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
15/03/2005 - 15:25 | Informe spam
Nos puedes decir el valor de las variables @sql1 y @sql2?

Cuando usas fechas en SQL Server, lo optimo seria usar un formato reconocido
independiente del lenguaje y seteo de "SET DATEFORMAT" en uso. Para eso
puedes usar los estilos 112 y 126 the la funcion CONVERT.

112 - aaaammdd
126 - aaaa-mm-ddThh:mm:ss.mmm

Ejemplo:

use northwind
go

declare @sql nvarchar(4000)

set @sql = N'select top 10 * from orders where orderdate >= @fd and
orderdate < @td'

execute sp_executesql @sql, N'@fd datetime, @td datetime', '19970101',
'19980101'
go


AMB


"MAbanto" wrote:

si ejecuto esto.(@fechaini='01/03/20005')
exec ( @sql1 + ' ' +@sql2 + @fechaini )

me sale:
Servidor: mensaje 170, nivel 15, estado 1, línea 12
Línea 12: sintaxis incorrecta cerca de '1'.

o si pongo esto que me recomendaron:

exec ( @sql1 + ' ' +@sql2 + ''' + @fechaini + ''')

Servidor: mensaje 241, nivel 16, estado 1, línea 1
Error de sintaxis al convertir una cadena de caracteres a datetime.

QUE PUEDO HACER??

me sale.


Respuesta Responder a este mensaje
#2 MAbanto
15/03/2005 - 15:35 | Informe spam
los parametros son:
set @sql1='select * from agencias'
set @sql2=' where cuando='
set @fechaini='01/03/20005'

pero dame un minuto para intentar lo que me indicas...

"Alejandro Mesa" escribió:

Nos puedes decir el valor de las variables @sql1 y @sql2?

Cuando usas fechas en SQL Server, lo optimo seria usar un formato reconocido
independiente del lenguaje y seteo de "SET DATEFORMAT" en uso. Para eso
puedes usar los estilos 112 y 126 the la funcion CONVERT.

112 - aaaammdd
126 - aaaa-mm-ddThh:mm:ss.mmm

Ejemplo:

use northwind
go

declare @sql nvarchar(4000)

set @sql = N'select top 10 * from orders where orderdate >= @fd and
orderdate < @td'

execute sp_executesql @sql, N'@fd datetime, @td datetime', '19970101',
'19980101'
go


AMB


"MAbanto" wrote:

> si ejecuto esto.(@fechaini='01/03/20005')
> exec ( @sql1 + ' ' +@sql2 + @fechaini )
>
> me sale:
> Servidor: mensaje 170, nivel 15, estado 1, línea 12
> Línea 12: sintaxis incorrecta cerca de '1'.
>
> o si pongo esto que me recomendaron:
>
> exec ( @sql1 + ' ' +@sql2 + ''' + @fechaini + ''')
>
> Servidor: mensaje 241, nivel 16, estado 1, línea 1
> Error de sintaxis al convertir una cadena de caracteres a datetime.
>
> QUE PUEDO HACER??
>
> me sale.
>
>
Respuesta Responder a este mensaje
#3 MAbanto
15/03/2005 - 15:59 | Informe spam
Ok gracias por el consejo juan carlos pero ahora tengo otro pequeño problema,
de ambas formas sale, cambiando la fecha a ansi ( como uds me indican ) pero
en mi tabla tengo registros con mi campo cuando:
10/03/2005
13/03/2005

y si consulto por los mayores a 10/03/2005 ( con lo conversion y todo) sale
PERFECTO , pero si consulto por los mayores a 11, no me sale nadaaa.. plis
que estoy haciendo mal??


"Juan Carlos Leguizamón" escribió:

Prueba así:
set @fechaini='20050301'
exec ( @sql1 + ' ' +@sql2 + '''' + @fechaini + '''') -- 4 apostrofes no 3

La fecha en ese formato es lo que te decia Maxi de pasar la fecha a ANSI.

También es valida la opción de usar el set dateformat como te indican en
otra respuesta.

Por otra parte, trata de seguir las conversaciones en el mismo hilo, asi
queda todo más claro.

Saludos,
JCL

"MAbanto" escribió en el mensaje
news:
> si ejecuto esto.(@fechaini='01/03/20005')
> exec ( @sql1 + ' ' +@sql2 + @fechaini )
>
> me sale:
> Servidor: mensaje 170, nivel 15, estado 1, línea 12
> Línea 12: sintaxis incorrecta cerca de '1'.
>
> o si pongo esto que me recomendaron:
>
> exec ( @sql1 + ' ' +@sql2 + ''' + @fechaini + ''')
>
> Servidor: mensaje 241, nivel 16, estado 1, línea 1
> Error de sintaxis al convertir una cadena de caracteres a datetime.
>
> QUE PUEDO HACER??
>
> me sale.
>
>



Respuesta Responder a este mensaje
#4 Juan Carlos Leguizamón
15/03/2005 - 16:37 | Informe spam
Prueba así:
set @fechaini='20050301'
exec ( @sql1 + ' ' +@sql2 + '''' + @fechaini + '''') -- 4 apostrofes no 3

La fecha en ese formato es lo que te decia Maxi de pasar la fecha a ANSI.

También es valida la opción de usar el set dateformat como te indican en
otra respuesta.

Por otra parte, trata de seguir las conversaciones en el mismo hilo, asi
queda todo más claro.

Saludos,
JCL

"MAbanto" escribió en el mensaje
news:
si ejecuto esto.(@fechaini='01/03/20005')
exec ( @sql1 + ' ' +@sql2 + @fechaini )

me sale:
Servidor: mensaje 170, nivel 15, estado 1, línea 12
Línea 12: sintaxis incorrecta cerca de '1'.

o si pongo esto que me recomendaron:

exec ( @sql1 + ' ' +@sql2 + ''' + @fechaini + ''')

Servidor: mensaje 241, nivel 16, estado 1, línea 1
Error de sintaxis al convertir una cadena de caracteres a datetime.

QUE PUEDO HACER??

me sale.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida