Si je sélectionne @RPMMONTH = Sep 2019, il devrait tirer les données de janvier 2019 à sept. 2019 ** Je n'ai qu'une valeur de paramètre i.e @RPMMonth de type varchar. P>
3 Réponses :
Declare @firstDay Date=( select convert(varchar(10),DATEADD(Year,-1*DateDiff(Year,getdate(),0),0),120)) Declare @CurDate Date=( SELECT convert(varchar(10),DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0)),120)) select * from YOURTABLE where colname between @firstDay and @CurDate
Idéalement, vous devez utiliser une date code> DataType, pas un (évidemment remplacer Les pièces d'accolades ( Cela vous donnerait toutes les lignes sur ou après le 01 janvier de l'année pour Si vous utilisez une date appropriée et passez la première date du mois, c'est-à-dire ( varchar code>. Si nous faire em>, devons utiliser un varchar code> alors vous pouvez faire quelque chose comme ceci: {} code>) et @RPMMonth code> et avant strong> le mois après @RPMMONTH code>. P> 2019-09-01 code> pour l'échantillon que vous avez donné), vous pourriez alors faire ci-dessous: p>
Cher Lamu, dans la ligne Convert (Date, Concat (Droite (@RPMMonth), '0101') Il lance une erreur d'arguments!
Manquer une parenthèse droite, @Lookup. (P.S. "Une erreur d'arguments" n'est pas utile; si vous obtenez une erreur, dites-nous l'erreur.)
SQL Server est plutôt bon sur la conversion des valeurs de date. Vous devriez être capable de faire:
select . . .
from t cross join
(values (convert(date, @rpmMonth)) as v(dte)
where datecol >= datefromparts(year(v.dte), 1, 1) and
datecol < datefromparts(year(dateadd(month, 1, v.dte)), month(dateadd(month, 1, v.dte)), 1)