C# 使用月份和年份获取SQL中的datetime筛选行
我的表在SQL Server中有一个C# 使用月份和年份获取SQL中的datetime筛选行,c#,sql,sql-server,date,datetime,C#,Sql,Sql Server,Date,Datetime,我的表在SQL Server中有一个datetime列。现在,我想使用datetime列的月份和年份来过滤该列上的表 如果我有完整的datetime格式,我可以设置或您可以使用MONTH()和YEAR()从您的列中获取准确的月份或年份 SELECT * FROM Sales WHERE (MONTH(CreatedDate) Between @MinimumMonth AND @MaximumMonth) AND (YEAR(CreatedDate) Between @MinimumYe
datetime
列。现在,我想使用datetime
列的月份和年份来过滤该列上的表
如果我有完整的datetime
格式,我可以设置
或您可以使用MONTH()
和YEAR()
从您的列中获取准确的月份或年份
SELECT * FROM Sales
WHERE
(MONTH(CreatedDate) Between @MinimumMonth AND @MaximumMonth)
AND
(YEAR(CreatedDate) Between @MinimumYear AND @MaximumYear)
希望此帮助您可以使用MONTH()
和YEAR()
从您的专栏中获取确切的月份或年份
SELECT * FROM Sales
WHERE
(MONTH(CreatedDate) Between @MinimumMonth AND @MaximumMonth)
AND
(YEAR(CreatedDate) Between @MinimumYear AND @MaximumYear)
希望这有助于 < P>,在这种情况下,你应该考虑一些事情。< /P>
CreatedDate应该是一个索引字段
您应该避免对索引字段应用函数,因为这会导致索引处于有效状态
>p>如果创建日期字段是日期时间字段,还需要考虑时间组件。
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
DECLARE@MinimumMonth INT=1
声明@MaximumMonth int=12
声明@MinimumYear INT=2014
声明@MaximumYear INT=2016
声明@MinDate日期
声明@MaxDate日期
声明@TempDate日期
SET@MinDate=Convert(日期,'01/'+CAST(@MinimumMonth作为varchar)+'/'+CAST(@MinimumYear作为varchar),103)
设置@TempDate=Convert(日期,'01/'+CAST(@MaximumMonth作为varchar)+'/'+CAST(@maximummyear作为varchar),103)
设置@MaxDate=DATEADD(s,-1,DATEADD(mm,DATEDIFF(m,0,@TempDate)+1,0))
--打印@MaxDate
从销售中选择*
哪里
CealDealt>=“MyDATE和CaleDeald>< P>”,在这种情况下,您应该考虑一些事情。
CreatedDate应该是一个索引字段
您应该避免对索引字段应用函数,因为这会导致索引处于有效状态
>p>如果创建日期字段是日期时间字段,还需要考虑时间组件。
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
DECLARE@MinimumMonth INT=1
声明@MaximumMonth int=12
声明@MinimumYear INT=2014
声明@MaximumYear INT=2016
声明@MinDate日期
声明@MaxDate日期
声明@TempDate日期
SET@MinDate=Convert(日期,'01/'+CAST(@MinimumMonth作为varchar)+'/'+CAST(@MinimumYear作为varchar),103)
设置@TempDate=Convert(日期,'01/'+CAST(@MaximumMonth作为varchar)+'/'+CAST(@maximummyear作为varchar),103)
设置@MaxDate=DATEADD(s,-1,DATEADD(mm,DATEDIFF(m,0,@TempDate)+1,0))
--打印@MaxDate
从销售中选择*
哪里
CreatedDate>=@MinDate和CreatedDate虽然MONTH()和YEAR()函数不可搜索,但这意味着此查询将无法在CreatedDate列上使用索引,更糟糕的是,将强制数据库对表中每一行的函数求值。构造日期来比较>=和<是一种更好的方法。但是,MONTH()和YEAR()函数不可搜索,这意味着此查询将无法在CreatedDate列上使用索引,更糟糕的是,将迫使数据库对表中的每一行计算函数。构造日期来比较>=和<是一种更好的方法。这确实有效。杰出的非常感谢。这真的很有效。杰出的非常感谢你。