Entre la clause pour la requête SQL (SQL Server) ne fonctionne pas?

J'ai un problème où j'ai une simple requête sql comme indiqué ci-dessous:

Select Ah_editime as todaysdate, (CONVERT(VARCHAR(25), DATEADD(dd, -(DAY(GETDATE()) - 1), GETDATE()), 103)) AS monthstartdate, (CONVERT(VARCHAR(10), CAST(GETDATE() AS DATE), 103)) AS monthcurrentdate from Transaction where Ah_editime BETWEEN (CONVERT(VARCHAR(25), DATEADD(dd, -(DAY(GETDATE()) - 1), GETDATE()), 103)) AND (CONVERT(VARCHAR(10), CAST(GETDATE() AS DATE), 103)) 

Je veux afficher le résultat uniquement pour le mois en cours jusqu'à la date jusqu'à. Mais le problème auquel je suis confronté est que j'obtiens aussi les valeurs du mois passé, ce qui crée des problèmes. J'ai un rapport qui affiche les valeurs.

rapport

Ici, si vous voyez que je reçois toutes les valeurs, mais je ne veux que pour le mois en cours.

PS: Cela peut-il être le problème de format? todaysdate qui s'affiche, quelle est ma valeur actuelle.

Date format de Date doit être modifié comme ci-dessous dans votre requête. Au lieu de 103, utilisez 101.

 BETWEEN (CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GETDATE())-1),GETDATE()),101)) AND (CONVERT(VARCHAR(10), CAST(GETDATE() AS DATE),101)) 

Sur la base de ce post, qu'en est-il de la requête suivante:

 DECLARE @monthStartDate AS DATE DECLARE @monthCurrentDate AS DATE SELECT @monthStartDate = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) SELECT @monthCurrentDate = GETDATE() SELECT CAST(Ah_editime AS DATE) AS todaysdate , @monthStartDate AS MonthStartDate , @monthCurrentDate AS MonthCurrentDate FROM [Transaction] WHERE Ah_editime BETWEEN @monthStartDate AND @monthCurrentDate