2013-10-07 160 views
0

以我SQL存儲過程:將數據類型datetime轉換爲smalldatetime的SQL錯誤?

@StartDate as smalldatetime, 
@EndDate as smalldatetime 

以我的C#代碼:

StartDate = new DateTime(1901,01,01,00,00,00); 
EndDate = new DateTime(2200,01,01,00,00,00); 

var StartDate2 = StartDate.ToString("dd/MM/yyyy HH:mm:ss"); 
StartDate2 = DateTime.ParseExact(StartDate2, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy HH:mm:ss"); 
StartDate = Convert.ToDateTime(StartDate2); 

var EndDate2 = EndDate.ToString("dd/MM/yyyy HH:mm:ss"); 
EndDate2 = DateTime.ParseExact(EndDate2, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy HH:mm:ss"); 
EndDate = Convert.ToDateTime(EndDate2); 

列是如在分貝一個SMALLDATETIME類型。我正在圍繞着這個圈子走!什麼是正確的方式來解析我的日期正確的格式查詢數據庫?

更新: 已更改的代碼,並工作正常。

SqlParameter parameter = daHoliday.SelectCommand.Parameters.Add("@StartDate", System.Data.SqlDbType.SmallDateTime); 
SqlParameter parameter2 = daHoliday.SelectCommand.Parameters.Add("@EndDate", System.Data.SqlDbType.SmallDateTime); 
parameter.Value = StartDate; 
parameter2.Value = EndDate; 
+2

不要將它們轉換爲字符串,只需通過命令參數將它們作爲'DateTime'類型對象傳遞即可。 – user2711965

+0

這樣做,謝謝!更新代碼以反映! – PeteTheGreek

+0

請只回答你自己的問題,然後在兩天內你可以接受它。它將清理此問題的工作流程。 –

回答

0

不要將它們轉換爲字符串,只是將它們作爲通過命令參數DateTime類型的對象。

DateTime不應轉換爲字符串以匹配數據庫表中的數據格式。如果表中的數據類型爲DateTime,則始終最好將.Net框架DateTime對象作爲參數傳遞給命令。

相關問題