【发布时间】:2013-07-10 01:52:33
【问题描述】:
我在 12 点之后的日期之后检索日期时遇到问题。例如:如果我从日历扩展器中单击:2/7/2013 到 19/7 月/2013 年,会出现此错误:日历 System.Globalization.GregorianCalendar 不支持字符串表示的 DateTime。
这是我的代码。
var format = "MM/dd/yyyy";
DateTime one = DateTime.ParseExact(startdate, format, CultureInfo.InvariantCulture);
DateTime two = DateTime.ParseExact(enddate, format, CultureInfo.InvariantCulture);
if (two >= one)
{
SqlConnection conn = new SqlConnection("Data Source=""catalog="";Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT Name,CLass, NRIC, StallNo, AmountSpent ,TimeDate=convert(nvarchar,timedate,103) FROM StudentTransactions WHERE TimeDate BETWEEN '" + one + "' AND '" + two + "'", conn);
SqlDataReader reader = cmd.ExecuteReader();
GridView1.DataSource = reader;
GridView1.DataSourceID = null;
GridView1.Visible = true;
GridView1.DataBind();
conn.Close();
}
【问题讨论】:
-
你看过
ParseExact吗? msdn.microsoft.com/en-us/library/ms131038.aspx -
你应该使用参数而不是强制
one和two在你的查询中被任意转换回字符串。
标签: asp.net sql sql-server