2013-07-10 78 views
1

我在12日後的日期後檢索日期時出現問題。例如:如果我從calander擴展程序單擊:2/7/2013至19/7月/ 2013,是否會拋出這個錯誤:日曆System.Globalization.GregorianCalendar中不支持該字符串表示的DateTime。日曆中不支持字符串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(); 
    } 
+0

有你看着'ParseExact'? http://msdn.microsoft.com/en-us/library/ms131038.aspx –

+0

是。它不起作用 –

+0

您應該使用參數,而不是強制將'one'和'two'任意轉換回查詢中的字符串。 –

回答

1

試試這個

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

where convert(date,<datecol>) between '' and '' 
+0

SELECT CONVERT(varchar,,103)* FROM StudentTransactions WHERE convert(date,)BETWEEN'「+ one +」'AND'「+ two +」'「,conn)我得到這樣的錯誤:'< '。 –

+0

刪除<>應該是你的列名... select convert(varchar,timedate,103) – maSTAShuFu

+0

它運行良好,但是我可能知道是否有改變dd/mm/yyyy的格式我得到MM/dd/yyyy? –

1

如果你想改變一個GridView從代碼隱藏列的格式添加RowDataBound到您的網格視圖。

然後在GridView_RowDataBound(object sender, GridViewRowEventArgs e)方法,你就可以訪問電子將提供您訪問到該行,您可以在指定格式的單個細胞。

Reference

Reference2

+0

我可以舉個例子嗎? –

+0

@PorWeiting查看參考文獻2 – Amit

0

確保第一您TimeDate柱的日期部分是在所期望的格式,即, 「日/月/年」。

var format = "dd/mm/yyyy"; 
DateTime one = DateTime.ParseExact(startdate, format, CultureInfo.InvariantCulture); 
DateTime two = DateTime.ParseExact(enddate, format, CultureInfo.InvariantCulture); 

編輯: 要格式化輸出,你可以做FF: 假設你有一個綁定列上你的GridView1您TIMEDATE:

<asp:BoundField DataField="TimeDate" HeaderText="TimeDate" DataFormatString="{0:dd/MM/yyyy}" /> 

您還可以使用DataFormatString="{0:d}"輸出日期您當前文化的短日期格式。

+0

打印出來的數據仍然在這個合成文件中。這是年/月/日與時間:7/3/2013 12:00:00 AM我想刪除時間並將格式更改爲dd/mm/yyyy。 –

+0

哦...所以你想格式化輸出..我誤解了問題..會更新我的答案。 –

+0

好吧..謝謝你.. –

相關問題