Razor 在webmatrix中搜索两个日期

Razor 在webmatrix中搜索两个日期,razor,sql-server-ce,webmatrix,Razor,Sql Server Ce,Webmatrix,我需要在Webmatrix中获得两个日期之间的搜索结果。我不知道我需要如何输入搜索或我做错了什么。这是我的密码。我没有收到任何错误,但是网格中只显示了列名 @{ Layout = "~/_SiteLayout.cshtml"; Page.Title = "Management"; var db = Database.Open("OMD"); var startdate = Request["startdate"]; var enddate = Request["enddate"]; var se

我需要在Webmatrix中获得两个日期之间的搜索结果。我不知道我需要如何输入搜索或我做错了什么。这是我的密码。我没有收到任何错误,但是网格中只显示了列名

@{
Layout = "~/_SiteLayout.cshtml";
Page.Title = "Management";
var db = Database.Open("OMD");
var startdate = Request["startdate"];
var enddate = Request["enddate"];
var selectCommand ="SELECT * FROM Ordr Where Date BETWEEN '" + startdate + "' AND '" + enddate + "'";
var selectedData = db.Query(selectCommand);
var grid = new WebGrid(source: selectedData, defaultSort: "Date", rowsPerPage:10);
}

   @grid.GetHtml(
    columns:grid.Columns(
        grid.Column("Date", format:@<Text>@item.Date</Text>),
        grid.Column("Status", format:@<Text>@item.Status</Text>),
        grid.Column("OStore", format:@<Text>@item.OStore</Text>),
        grid.Column("CStore", format:@<Text>@item.CStore</Text>),
        grid.Column("Employee", format:@<Text>@item.Employee</Text>)
    )
    )
@{
Layout=“~/\u siteloayout.cshtml”;
Page.Title=“管理”;
var db=Database.Open(“OMD”);
var startdate=请求[“startdate”];
var enddate=请求[“enddate”];
var selectCommand=“从Ordr中选择*,其中日期介于“+startdate+”和“+enddate+”之间;
var selectedData=db.Query(selectCommand);
var grid=new WebGrid(来源:selectedData,defaultSort:“日期”,rowsPerPage:10);
}
@grid.GetHtml(
列:grid.columns(
网格.Column(“日期”,格式:@@item.Date),
grid.Column(“状态”,格式:@@item.Status),
grid.Column(“OStore”,格式:@@item.OStore),
grid.Column(“CStore”,格式:@@item.CStore),
网格栏(“雇员”,格式:@@item.Employee)
)
)
我正在使用MM/DD/YYYY格式进行搜索,就像在表中一样

我正在使用MM/DD/YYYY格式进行搜索,就像在表中一样

这是一种常见的误解<代码>日期(和
日期时间
)数据类型不存储格式化日期(您看到的格式是dd/mm/yyyy)

如果您使用的是日期的字符串表示形式(您在这里),则应将其格式化如下:

YYYY-MM-DD HH:MI:SS.NNN
这是一种通用格式,将解决您遇到的问题


另一种方法是参数化查询并传递日期对象。

以下是如何使用Razor数据库帮助器参数约定安全地执行此操作:

var db = Database.Open("OMD");
var startdate = Request["startdate"].AsDateTime();
var enddate = Request["enddate"].AsDateTime();
var selectCommand ="SELECT * FROM Ordr Where Date >= @0 AND Date <= @1";
var selectedData = db.Query(selectCommand, startdate, enddate);
var db=Database.Open(“OMD”);
var startdate=Request[“startdate”].AsDateTime();
var enddate=Request[“enddate”].AsDateTime();

var selectCommand=“从Ordr中选择*其中日期>=@0和日期P.S.您确实需要查找SQL注入!我不知道怎么做这些事情。我对任何编程都是新手。我使用了这些代码,并且再次没有生成任何数据,但是没有得到任何错误。在数据库中,它包括时间。我是否需要在搜索中包含时间?如果需要,我如何设置时间格式?或者是否存在其他问题?我确实读过那篇文章。现在我明白了如何设置查询的格式。谢谢。您的日期列使用了什么数据类型?约会时间?如果在WebMatrix的查询编辑器中使用实际日期运行查询,会发生什么情况?我原以为它是datetime,但它在nvarchar上,但当我将其更改为datetime时,我收到一个错误“转换为datetime时发生溢出”,它将错误指向此行“var selectedData=db.query(selectCommand,startdate,enddate);”我正在使用这个查询SELECT*FROM Ordr,其中日期>=8/1/2013,并且您必须将日期类型更改为datetime。否则,您的SQL将永远无法按您需要的方式工作。您还需要确保传入的值可以转换为日期时间。最好的格式是yyyy-mm-dd-hhh:mm:ss