1.首先要查询类表中的一个时间段,要明确我的数据库中只有一个时间字段,我们先将他拆分一下。

if ($("#news_OpenTime").val() != "" || $("#news_CloseTime").val() != "") {
sear += "&sj=" + $("#news_OpenTime").val() + "," + $("#news_CloseTime").val();
}

这一段js的意思是,我的前台有两个text元素,当然现在用js已经变成了日历控件。

下面是后台代码:

if (Request.QueryString["sj"] != null)
{
sj = Request.QueryString["sj"];
url += "&sj=" + sj;
}

sj即时间,是我获取的前台的值。

因为我前台获取的值是 $("#news_OpenTime").val() + "," + $("#news_CloseTime").val() 所以进行拆分。

if (sj != string.Empty)

//首先是时间不为空,如果为空就不走
{
string pr1 = sj.Split(',')[0];
string pr2 = sj.Split(',')[1];

//用逗号截取
string newsTime1 = string.Empty, newsTime2 = string.Empty;
if (pr1 != string.Empty && pr2 == string.Empty)
{
num += "and(convert(char(10),news_Time,120) >= '" + pr1 + "')";
newsTime1 = pr1;
}

//条件1.如果用户只输入第一个文本框

//这里的convert(char(10),news_Time,120),截取年月日,去除时分秒
else if (pr1 == string.Empty && pr2 != string.Empty)
{
num += "and(convert(char(10),news_Time,120) <= '" + pr2 + "')";
newsTime2 = pr2;
}

//条件2,用户只输入第二个文本框
else
{

//现在有个思路,用户选择第一个文本框,和第二个文本框,如果第一个小,第二大,当然很好,但是如果第一个大呢,难道用户就查不出来了吗,这当让不行。

所以如下
DateTime sj1 = Convert.ToDateTime(pr1);
DateTime sj2 = Convert.ToDateTime(pr2);

//转化两个string 类型的值,只为比较大小
if (DateTime.Compare(sj1, sj2) > 0)
{
newsTime1 = pr2;
newsTime2 = pr1;
}
else
{
newsTime1 = pr1;
newsTime2 = pr2;
}
num += "and(convert(char(10),news_Time,120) between '" + newsTime1 + "' and '" + newsTime2 + "')";
}

最后是绑定
news_OpenTime.Text = newsTime1;
news_CloseTime.Text = newsTime2;
}

两种时间查询

select convert(char(10),news_Time,120) from tb_News

select news_Time from tb_News

05-11 11:10