/ / stringはカレンダーではサポートされていませんSystem.Globalization.GregorianCalendar - asp.net、sql、sql-server

カレンダーでは文字列はサポートされていません

日付の取得に問題があります日付が12の後に落ちた後。例えば:私はカレンダーエクステンダーからクリックした場合:2013年2月7日から19年7月19日まで、このエラーでそれをスローします: System.Globalization.GregorianCalendar。

これは私のコードです。

    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();
}

回答:

回答№1は1

これを試して

select CONVERT(varchar,<datecol>,103)      ---  and will return as dd/mm/yyyy

where convert(date,<datecol>) between "" and ""

回答№2の場合は1

あなたがの列のフォーマットを変更したい場合 GridView CodeBehindから追加 RowDataBound あなたのグリッドビューに。

その後、 GridView_RowDataBound(object sender, GridViewRowEventArgs e) あなたがフォーマットを指定することができるその行の個々のセルへのアクセスをあなたに提供するでしょう。

参照

参考2


回答№3の場合は0

最初にあなたの日付の部分を確認してください TimeDate 列は希望する形式、つまり "dd / mm / yyyy"です。

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}" 現在のカルチャの短い日付形式で日付を出力します。