如何根据日期条件获取记录?

时间:2014-08-28 07:23:32

标签: c# sql-server-2008 gridview

enter image description here

我在SQL Server 2008中有一个表PersonalInformation。在此表中有一列CreateDate,用于存储插入记录的日期。现在我想根据日期从表中搜索记录。我的搜索字符串类似于Month-YearCreateDate使用SQL Server的GETDATE()函数存储。

如果我使用Month-Year格式进行搜索,例如March-2012我希望显示与表记录匹配的月份和年份,并且还会在March-2012显示之前插入记录。

我怎么能实现这个目标?

提前致谢。

4 个答案:

答案 0 :(得分:0)

从Tbl_Name中选择*,其中Convert(varchar,createDate,110)就像'12 -10'

答案 1 :(得分:0)

尝试这样:

SELECT * FROM TableName
WHERE 
CONVERT(varchar(10), DATENAME(MONTH, CreatedDate)) = 'March' // Passed From Parameter
AND Year(CreatedDate) = 2014                                 // Passed From Parameter

答案 2 :(得分:0)

使用DATEPART功能

select  DATEPART(MM,'March 2012') --> 3
select  DATEPART(YYYY,'March 2012')--> 2012

所以在您的查询中搜索

select * from table where DATEPART("MM" CreatedDate) = DATEPART(MM,'March 2012') AND DATEPART("YYY" CreatedDate) = DATEPART(YYY,'March 2012')

这样你可以根据需要检查=或> =。

请注意,我的输入为March 2012而非March-2012。 对于替换字符串,使用Replace函数以他的方式

REPLACE('March-2012','-',' ')

在输入日期前搜索

select * from table where (DATEPART("MM" CreatedDate) <= DATEPART(MM,'March 2012') AND DATEPART("YYY" CreatedDate) = DATEPART(YYY,'March 2012') OR (DATEPART("YYY" CreatedDate) < DATEPART(YYY,'March 2012')))

在输入日期后搜索

select * from table where (DATEPART("MM" CreatedDate) > DATEPART(MM,'March 2012') AND DATEPART("YYY" CreatedDate) = DATEPART(YYY,'March 2012') OR (DATEPART("YYY" CreatedDate) > DATEPART(YYY,'March 2012')))

答案 3 :(得分:0)

您不需要处理数据的字符串表示,并使用该字符串进行比较。

我建议您首先将输入日期解析为正确的DateTime对象:

var dt = DateTime.ParseExact("March-2012", "MMMM-yyyy", CultureInfo.InvariantCulture);

然后在您的SqlParameter中使用此DateTime对象作为SqlDbType.DateTime SqlCommand CreatedDate,根据您的{{1}}列进行过滤。