【问题标题】:Search between 2 dates in webmatrix在 webmatrix 中的 2 个日期之间搜索
【发布时间】:2013-09-06 18:43:11
【问题描述】:

我需要在 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>)
    )
    )

我正在使用表格中的格式 MM/DD/YYYY 进行搜索。

【问题讨论】:

标签: razor sql-server-ce webmatrix


【解决方案1】:

以下是如何使用 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);

有关在 ASP.NET 网页 (Razor) 中处理数据的更多信息,请阅读此内容:http://www.asp.net/web-pages/tutorials/data/5-working-with-data

【讨论】:

  • 我使用了该代码并且再次没有生成任何数据但没有出现错误。在数据库中,它包括时间。我是否需要在搜索中包含时间,如果需要,我该如何格式化或者是否存在其他问题?我确实读过那篇文章。我现在看到了我需要如何格式化查询。谢谢。
  • 您的日期列使用了什么数据类型?约会时间?如果您在 WebMatrix 的查询编辑器中使用实际日期运行查询会发生什么?
  • 我以为我将它作为日期时间,但它在 nvarchar 上,但是当我将其更改为日期时间时,我收到一个错误“转换为日期时间时发生溢出”,它将错误导向这一行“var selectedData = db.Query(selectCommand, startdate, enddate);"
  • 我正在使用这个查询 SELECT * FROM Ordr Where Date >= 8/1/2013 AND Date
  • 您必须将类型更改为日期时间。否则,您的 SQL 将永远无法按您的需要运行。您还需要确保您传入的值可以转换为日期时间。最好的格式是 yyyy-mm-dd hhh:mm:ss
【解决方案2】:

我正在使用表格中的格式 MM/DD/YYYY 进行搜索。

这是一个常见的误解。 date(和datetime)数据类型不存储格式化日期(dd/mm/yyyy 是您看到的格式)。

如果您使用日期的字符串表示(您在这里),那么您应该像这样格式化它:

YYYY-MM-DD HH:MI:SS.NNN

这是一种通用格式,可以解决您遇到的问题。

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

【讨论】:

  • 我不知道该怎么做。我对任何类型的编程都很陌生。非常感谢您提供的任何代码。
猜你喜欢
  • 2019-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
相关资源
最近更新 更多