salve, ho un problema sulla conversione delle date con sql server 2008.
questa è la stored:

codice:
CREATE PROCEDURE [dbo].[Ricerca](
@cognome nvarchar(50),
@causale int,
@datainiziale DateTime,
@datafinale DateTime,
@cf nvarchar(16))

AS
BEGIN




DECLARE @sql nvarchar(2000)
SET @sql ='SELECT u.Cognome,
u.Nome,
u.Via,
u.Telefono,u.Comune,u.Cap,u.Provincia,u.Cf,b.Data_Versamento,b.Data_inserimento,b.IdOperatore,b.IdUtente,b.Note,
c.Causale,c.Nr_CC from 
Utenti u 
Left Join Bollettino b on u.idUtenti = b.IdUtente
INNER JOIN Causale c on b.IdCausale = c.IdCausale
where b.Data_Versamento between' +  @datainiziale + 'and' +   @datafinale +'' 



IF(LTrim(@cognome)  is not null) 

BEGIN

 
SET @sql =' and u.Cognome = ' + @cognome + ''
END

IF(LTrim(@causale) is not null)

BEGIN
 SET @sql= 'and c.Causale = ' + @causale + ''

END

IF(LTRim(@cf) is not null)

BEGIN

SET @sql=' and u.Cf = ' + @cf +''
END

Exec(@sql)

ENd(
In parole povere auando vado ad eseguire la stored e vado ad inserire i valori per esempio 2009-07-01 e 2009-07-31 mi dà l'errore di conversione, mi potreste dire che tipo di data devo inserire? e che tipo di conversione devo fare?

Grazie, spero tanto mi aiutate.