我在12日之后的日期之后检索日期时遇到问题。例如:如果我从calander extender点击:2013年2月7日到2013年7月19日,将会抛出这个错误:日历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();
}
答案 0 :(得分:1)
如果要更改CodeBehind GridView
的列RowDataBound
的格式,请在网格视图中添加GridView_RowDataBound(object sender, GridViewRowEventArgs e)
。
然后在{{1}}方法中,您将能够访问e,这将使您能够访问该行的各个单元格,您可以在其中指定格式。
答案 1 :(得分:1)
试试这个
select CONVERT(varchar,<datecol>,103) --- and will return as dd/mm/yyyy
where convert(date,<datecol>) between '' and ''
答案 2 :(得分:0)
首先确保TimeDate
列的日期部分符合您所需的格式,即&#34; dd / mm / yyyy&#34;。
var format = "dd/mm/yyyy";
DateTime one = DateTime.ParseExact(startdate, format, CultureInfo.InvariantCulture);
DateTime two = DateTime.ParseExact(enddate, format, CultureInfo.InvariantCulture);
编辑: 要格式化输出,可以执行ff: 假设您的GridView1上的TimeDate上有一个Boundfield:
<asp:BoundField DataField="TimeDate" HeaderText="TimeDate" DataFormatString="{0:dd/MM/yyyy}" />
您还可以使用DataFormatString="{0:d}"
以当前文化的短日期格式输出日期。