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

Như bạn có thể thấy tôi đang đặt giá trị mặc định của tham số trong .Net SqlDataSource. Tôi không nghĩ rằng chuỗi là outputting định dạng chính xác mặc dù. Định dạng đúng để một Thời gian T-SQL phù hợp với nó là gì?Làm cách nào để tôi có thể chuyển đổi .Net Datetime sang Thời gian T-SQL

Sau đây là các định dạng được outputted ngay bây giờ:

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

Edit: Trước khi tôi có DataSource mà nó cần phải có được viết SqlDataSource

Và đây là một số mã

<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> 

Edit: Vâng, tôi đã tìm ra vấn đề và nó sẽ có vẻ hơi ngớ ngẩn. Mã không bao giờ gọi DefaultValue vì luôn có một giá trị hiện tại. Vì vậy, giải pháp duy nhất của tôi là tạo một điều khiển nhãn ẩn mới và tải datetime đã sửa vào đó. Điều đó khá nhiều đã làm các trick. Tôi không biết làm thế nào tôi bỏ qua điều đó.

Trả lời

3

Ban đầu bạn tạo tham số? Bạn có thể chỉ định kiểu dữ liệu là datetime vào thời điểm đó. Sau đó gán datetime của bạn cho tham số trực tiếp thay vì cố chuyển đổi nó thành một chuỗi.


Dựa trên mã bạn đã đăng, lựa chọn tốt nhất của bạn có thể chỉ để điền trước kiểm soát của bạn. Ngoài ra, có vẻ tốt cho giá trị mặc định trong bối cảnh đó, vì vậy tôi nghi ngờ vấn đề là ở một nơi khác. Hãy thử đặt thuộc tính CancelSelectOnNullParameter của điều khiển thành False.

+0

Đề xuất tốt. Tôi đã không làm điều này ở nơi đầu tiên vì vậy tôi sẽ phải xem xét lý do tại sao nó không được thiết lập theo cách đó. –

+0

Tôi đoán thuật sĩ đã được sử dụng để thiết lập một SqlDataSource và tôi không thấy bất kỳ cách nào để chọn một loại –

+0

Nó nên đã tạo ra một số mã - nó sẽ giúp để xem mã đó. –

3

Tôi sẽ sử dụng này:

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

Có một struct SqlDateTime bạn có thể sử dụng cho điều này

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

Hoặc trực tiếp trong một dòng (như SqlDateTime mất args cùng tại một trong những nhà xây dựng quá tải như lớp .NET DateTime):

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

Tôi chỉ đơn giản là không thể có được điều này để làm việc. DefaultValue yêu cầu một loại chuỗi. –

+0

SelectParameter bạn có nghĩa là gì? YYYYMMDDHHMMSS là định dạng được Microsoft khuyến nghị để chuyển các loại ngày giữa các hệ thống như [để họ nói] tất cả chúng sẽ nhận ra nó một cách chính xác. – BenAlabaster

0

Tôi luôn luôn buộc ngày tháng của tôi vào MMM dd yyyy khi chuyển qua làm tham số, theo cách đó không có cách nào có thể bị rối tung và lộn xộn.

2

này nên làm như lừa:

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

Vì một số lý do này không hiệu quả nhưng tôi không biết tại sao. Đang điều tra. –

+0

Kiểm tra ngôn ngữ của bạn (cả cơ sở dữ liệu và .NET) để đảm bảo chúng khớp nhau. – CMerat

+0

Vẫn không có may mắn ......... –

Các vấn đề liên quan