2009-05-04 70 views
5
MyDataSource.SelectParameters["startDate"].DefaultValue = 
            fromDate.SelectedDate.Date.ToString(); 

正如您所看到的,我在.Net SqlDataSource中設置了參數的默認值。我不認爲字符串正在輸出正確的格式。什麼是正確的格式,以便T-SQL Datetime能夠正確匹配它?如何將.Net日期時間轉換爲T-SQL日期時間

下面是現在的輸出格式:

  • 2009年5月1日上午12時零零分00秒
  • 2009年5月4日下午十一時59分59秒

編輯:之前,我有,它應該已被寫入的SqlDataSource

這裏是一些代碼

數據源
<asp:SqlDataSource ID="MyDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:sampledb %>" SelectCommand="Recording_Select" SelectCommandType="StoredProcedure" OnSelecting="MyDataSource_Selecting"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="respondentID" DefaultValue="%" Name="RespondentID" PropertyName="Text" Type="String" /> 
     <asp:SessionParameter Name="projectCode" SessionField="proj" Type="String" /> 
     <asp:ControlParameter ControlID="interviewerList" Name="InterviewerID" PropertyName="SelectedValue" Type="String" /> 
     <asp:ControlParameter ControlID="dispCodeList" Name="dispCode" PropertyName="SelectedValue" Type="Int32" /> 
     <asp:ControlParameter ControlID="fromDate" DefaultValue="1/1/1900" Name="startDate" PropertyName="SelectedValue" Type="DateTime" /> 
     <asp:ControlParameter ControlID="toDate" DefaultValue="1/1/1900" Name="endDate" PropertyName="SelectedValue" Type="DateTime" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

編輯: 好吧,我想通了這個問題,它似乎有點傻。代碼永遠不會調用DefaultValue,因爲總是存在一個值。所以我唯一的解決方案是製作一個新的隱藏標籤控件,並將更正後的日期時間加載到該標籤中。這幾乎做了訣竅。我不知道我是如何忽略這一點的。

回答

3

你最初如何創建參數?您應該能夠將該數據類型指定爲當時的日期時間。然後將datetime直接分配給參數,而不是試圖將其轉換爲字符串。


根據您發佈的代碼,您最好的選擇可能只是預先填充您的控件。此外,在該上下文中的默認值看起來很好,所以我懷疑問題在其他地方。嘗試將控件的CancelSelectOnNullParameter屬性設置爲False。

+0

好的建議。我沒有首先做到這一點,所以我不得不考慮爲什麼它不是這樣設置的。 – 2009-05-04 21:02:10

3

我這樣做:

MyDataSource.SelectParameters["startDate"].DefaultValue = 
            fromDate.SelectedDate.Date.ToString("yyyyMMdd HH:mm:ss"); 
9

有一個SQLDATETIME結構,你可以使用這個

DateTime DotNetDateTime = new DateTime(2009, 5, 4); 
System.Data.SqlTypes.SqlDateTime sqlDateTime = new System.Data.SqlTypes.SqlDateTime(DotNetDateTime); 
在一行

或者直接(如SQLDATETIME採用相同ARGS在構造函數中的一個過載作爲.NET DateTime類):

System.Data.SqlTypes.SqlDateTime sqlDateTime = new System.Data.SqlTypes.SqlDateTime(2009, 5, 4); 
+0

我根本無法得到這個工作。 DefaultValue需要一個字符串類型。 – 2009-05-04 21:49:57

+0

您的意思是SelectParameter? YYYYMMDDHHMMSS是微軟推薦的用於在系統之間傳輸日期類型的格式[所以他們說]他們都會正確識別它。 – BenAlabaster 2009-05-04 23:57:31

0

當我以參數的形式傳遞時,我總是強制我的日期變爲MMM dd yyyy,這樣就沒有辦法將它搞亂並翻轉過來。

2

這應該做的伎倆:

MyDataSource.SelectParameters["startDate"].DefaultValue = fromDate.SelectedDate.Date.ToString("yyyy-MM-dd HH:mm:ss") 
相關問題