В идеале вы должны использовать тип данных date
, а не varchar
. Если нам сделать , однако, придется использовать varchar
, то вы можете сделать что-то вроде этого:
SELECT {Columns}
FROM {Your Schema And Table}
WHERE {DateColumn} >= CONVERT(date,CONCAT(RIGHT(@rpmMonth),'0101'))
AND {DateColumn} < DATEADD(MONTH, 1, CONVERT(date, '01 ' + @rpmMonth));
(очевидно, заменить части в скобках ({}
) и предполагает, что язык LOGIN
основан на английском языке.)
Это даст вам все строки 01 января года или после 01 января года для @rpmMonth
и до месяца после @rpmMonth
.
Если вы используете правильную дату и передаете первую дату месяца, т. е. (2019-09-01
для образца, который вы дали), то выможет сделать следующее:
SELECT {Columns}
FROM {Your Schema And Table}
WHERE {DateColumn} >= DATEADD(YEAR, DATEDIFF(YEAR, 0, @rpmMonth),0)
AND {DateColumn} < DATEADD(MONTH, 1, @rpmMonth);