Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用月份和年份获取SQL中的datetime筛选行_C#_Sql_Sql Server_Date_Datetime - Fatal编程技术网

C# 使用月份和年份获取SQL中的datetime筛选行

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

我的表在SQL Server中有一个
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列上使用索引,更糟糕的是,将迫使数据库对表中的每一行计算函数。构造日期来比较>=和<是一种更好的方法。这确实有效。杰出的非常感谢。这真的很有效。杰出的非常感谢你。