多语搜索查询中日期范围的SQL语法

时间:2013-06-13 16:34:32

标签: sql search webmatrix date-range

到目前为止,我已经编写了这段代码,它适用于我正在做的事情,但是如果我搜索6月13日它只会查找到6月12日,有人可以帮我查清我的代码中的错误吗?或者我可以在哪里添加一天的间隔?我试过,它只是不适合我。

var db = Database.Open("RMS") ;
var selectCommand = "SELECT * FROM RMS";
var formSSO = "";
var fromDate= "";
var toDate= "";

    formSSO = Request.QueryString["formSSO"];
    fromDate = Request.QueryString["fromDate"];
    toDate = Request.QueryString["toDate"];


selectCommand = "(SELECT * from RMS WHERE SSO LIKE @0)";


if(!Request.QueryString["fromDate"].IsEmpty() ) {
    selectCommand = "SELECT * FROM RMS WHERE SSO LIKE @0 AND Created BETWEEN @1 AND @2";
}

if(Request.QueryString["formSSO"].IsEmpty() ) {
    <div class="simple"><strong>*SSO ID is Required.</strong></div>

}
var data = db.Query(selectCommand, formSSO, fromDate, toDate);
var columns = new[]{"ID", "SSO", "Category", "System", "Subject", "Created"};
var grid = new WebGrid(data, ajaxUpdateContainerId: "grid", defaultSort: "ID", columnNames: columns);
if (Request.QueryString[grid.SortDirectionFieldName].IsEmpty()) {
grid.SortDirection = SortDirection.Descending;
}
}

1 个答案:

答案 0 :(得分:0)

您可以尝试的一件事是使用&lt; =和&gt; =代替BETWEEN,如下所示:

selectCommand = "SELECT * FROM RMS WHERE SSO LIKE @0 AND Created >= @1 AND Created <= @2";

我希望这样做!

如果没有,你也可以强行将日期推迟到将来的一天,然后使用BETWEEN运算符就像你现在这样:

            DateTime to_date = Convert.ToDateTime(to_date_string);
            to_date = to_date.AddDays(1);
            to_date_string = to_date.ToString();