2017-08-18 1 views
0

je suis en train de passer premier jour et le dernier jour du mois précédent comme paramètre de date dans ma procédure stockée mais il jette des erreurs de conversion de données comme ci-dessous:paramètre de date dynamique dans la procédure stockée

Échec de la conversion date et/ou l'heure de la chaîne de caractères.

Voici un exemple de comment j'ai passé le paramètre;

EXEC DBO.usp_PRODUCTS 'DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0)' 
          ,'DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), -1)' 

Le type de données pour la date de début et de fin dans ma procédure stockée est la date, même si je change de varchar, il est montrant erreur semblable.

Y at-il un moyen de passer le premier jour et le dernier jour du mois précédent en tant que paramètre dans mon proc stocké?

Répondre

0

Essayez cette

Declare @startDate Date = DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()), 0)); 
Declare @endDate Date =DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)); 

EXEC DBO.usp_PRODUCTS @startDate , @endDate ; 
0

Si vous utilisez SQL Server 2012 ou au-dessus, vous pouvez utiliser la fonction EOMonth retourner le dernier jour du mois avec un décalage de -1 pour le mois précédent:

EXEC DBO.usp_PRODUCTS 
    DateAdd(day,1,EOMonth(GetDate(),-2)), 
    EOMonth(GetDate(),-1) 
+0

Merci, mais il montre une erreur de syntaxe – axlrose89