簡體   English   中英

如何將.Net日期時間轉換為T-SQL日期時間

[英]How can I convert a .Net Datetime to a T-SQL Datetime

MyDataSource.SelectParameters["startDate"].DefaultValue =
                                     fromDate.SelectedDate.Date.ToString();

如您所見,我在.Net SqlDataSource中設置參數的默認值。 我不認為字符串輸出正確的格式。 什么是正確的格式,以便T-SQL Datetime能夠正確匹配它?

以下是現在輸出的格式:

  • 5/1/2009 12:00:00 AM
  • 5/4/2009 11:59:59 PM

編輯:在我有DataSource之前應該編寫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,因為總有一個值存在。 因此,我唯一的解決方案是創建一個新的隱藏標簽控件並將更正的日期時間加載到其中。 這幾乎就是訣竅。 我不知道我是如何忽視這一點的。

你可以使用一個SqlDateTime結構

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

或者直接在一行中(因為SqlDateTime在.NET DateTime類中的構造函數重載中采用相同的args):

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

我會用這個:

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

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


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

這應該做的伎倆:

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

我總是強迫我的約會到MMM dd yyyy作為參數傳遞,這樣就沒有辦法搞砸了並翻轉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM