Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Error 'Conversion failed when converting datetime' dentro de SP

Estas en el tema de Error 'Conversion failed when converting datetime' dentro de SP en el foro de SQL Server en Foros del Web. Estoy obteniendo este error al pasar 2 variables de fecha a la consulta que les muestro a continuación: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original DECLARE ...
  #1 (permalink)  
Antiguo 10/12/2009, 19:01
 
Fecha de Ingreso: junio-2007
Ubicación: El Salvador
Mensajes: 21
Antigüedad: 16 años, 10 meses
Puntos: 0
Error 'Conversion failed when converting datetime' dentro de SP

Estoy obteniendo este error al pasar 2 variables de fecha a la consulta que les muestro a continuación:



Código SQL:
Ver original
  1. DECLARE [Q]SQL NVARCHAR(MAX)
  2.  
  3.  SET [Q]SQL = N'SELECT *
  4.  
  5.            FROM (
  6.  
  7.                SELECT b.cardcode,b.cardname,b.docnum,day(docduedate) as [day],Delivrdqty FROM  empresafinal.dbo.RDR1 A inner join empresafinal.dbo.ORDR B on A.docentry=B.docentry  inner join empresatest.dbo.OCRD C  on c.cardcode=b.cardcode where  B.canceled=''N'' and ((b.docstatus=''C'' and b.invntSttus=''C'')  or  (b.docstatus=''C'' and b.invntSttus=''O'')) and b.docduedate>=convert(datetime,' +   [Q]lfecha_inicial +   ') and b.docduedate<=convert(datetime,' +   [Q]lfecha_final +   ') and (a.whscode<>''LubAlma'' and a.whscode<>''01'')
  8.  
  9.                ) pvt
  10.  
  11.            PIVOT (SUM(Delivrdqty) FOR [day] IN (' + [Q]DiaPVT + ')) AS Child
  12.  
  13.            ORDER by Cardcode'
  14.  
  15.  EXECUTE sp_executesql [Q]SQL

he reemplazado el simbolo "arroba" por [Q] junto a las variables.

El contenido de las variables es según el depurador:

[Q]lfecha_inicial =2009-11-01 00:00:00.000
[Q]lfecha_final=2009-11-30 00:00:00.000

De antemano gracias.
  #2 (permalink)  
Antiguo 10/12/2009, 20:30
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Error 'Conversion failed when converting datetime' dentro de SP

De que tipo son @lfecha_inicial y @lfecha_final?
A primera vista parece que te falta el tercer parametro de la funcion convert.
Prueba eliminando la hora.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 10/12/2009, 21:20
 
Fecha de Ingreso: junio-2007
Ubicación: El Salvador
Mensajes: 21
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Error 'Conversion failed when converting datetime' dentro de SP

las variables @lfecha_inicial y @lfecha_final son de tipo datetime. he probado los siguientes cambios sin resultado:

Código SQL:
Ver original
  1. -- otra prueba
  2. b.docduedate>=CONVERT(datetime,' +   @lfecha_inicial +   ',101) AND b.docduedate<=CONVERT(datetime,' +   @lfecha_final +   ',101)
  3.  
  4.  
  5. -- otra prueba
  6. CONVERT(datetime,b.docduedate,101)>=CONVERT(datetime,' +   @lfecha_inicial +   ',101) AND CONVERT(datetime,b.docduedate,101)<=CONVERT(datetime,' +   @lfecha_final +   ',101)
  #4 (permalink)  
Antiguo 11/12/2009, 07:57
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Error 'Conversion failed when converting datetime' dentro de SP

Así tiene que ser esa parte:
Código SQL:
Ver original
  1. '
  2. ...
  3. AND b.docduedate >= ''' + CONVERT(CHAR(10), @lfecha_inicial, 101) + '
  4. AND b.docduedate <= ''' + CONVERT(CHAR(10), @lfecha_final, 101) + '''
  5. ...'
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 11/12/2009, 11:20
 
Fecha de Ingreso: junio-2007
Ubicación: El Salvador
Mensajes: 21
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Error 'Conversion failed when converting datetime' dentro de SP

Funciona ! Solo que faltaba una comilla simple , voy a dejar el bloque de código que funciona y la manera en que llamo el SP
Código SQL:
Ver original
  1. EXEC     [dbo].[SP_ventaspordia]
  2.         @lfecha_linicial = '2009-12-04',
  3.         @lfecha_lfinal = '2009-12-05'
  4. -- al final quedo el bloquecito problematico asi:
  5. ... b.docduedate>=''' + convert(char(10),@lfecha_inicial,101)  +   ''' AND b.docduedate<=''' + convert(char(10),@lfecha_final,101) + ''' ....

Muchas gracias flaviovich.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:35.