我的表在SQL Server中有一个datetime
列。现在,我希望使用它的月份和年份来过滤datetime
列上的表格。
如果我有完整的datetime
格式,我可以在该查询中设置>
或<
,但是通过使用月份和年份过滤器,我不知道该怎么做这一点。
请建议我如何在桌面上进行过滤?
表格详情:
Sales
DateTime
列:Created Date
(yy / mm / dd)存储过程参数:
@MinimumMonth int, @MaximumMonth int, @MinimumYear int, @MaximumYear int,
这些是我可以通过我的存储过程参数发送的所有值,现在我需要将dateformat形成为Minimonth / Miniyear和Maxmonth / MaxYear,并且需要根据这些mini amd max mm / yy范围来过滤记录。
提前致谢
答案 0 :(得分:4)
在这种情况下,您应该考虑一些事项。
如果CreatedDate字段是日期时间字段
,您还需要考虑时间组件DECLARE @MinimumMonth INT = 1
DECLARE @MaximumMonth int = 12
DECLARE @MinimumYear INT = 2014
DECLARE @MaximumYear INT = 2016
DECLARE @MinDate Date
DECLARE @MaxDate Date
DECLARE @TempDate Date
SET @MinDate = Convert(date, '01/'+ CAST(@MinimumMonth AS varchar) + '/' + CAST(@MinimumYear AS varchar),103)
SET @TempDate = Convert(date,'01/'+ CAST(@MaximumMonth AS varchar) + '/' + CAST(@MaximumYear AS varchar),103)
SET @MaxDate = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@TempDate)+1,0))
--print @MaxDate
SELECT * FROM Sales
WHERE
CreatedDate >= @MinDate AND CreatedDate <= @MaxDate
答案 1 :(得分:1)
您可以使用MONTH()
和YEAR()
从列中获取确切的月份或年份。
SELECT * FROM Sales
WHERE
(MONTH(CreatedDate) Between @MinimumMonth AND @MaximumMonth)
AND
(YEAR(CreatedDate) Between @MinimumYear AND @MaximumYear)
希望这个帮助