簡體   English   中英

SQL Server DateTime和C#DateTime

[英]SQL server DateTime and C# DateTime

在我的SQL Server上,我有一個非常簡單的表進行測試,該表僅包含三行: IDDateHours 。( varcharDateTimevarchar )。

SQL中的DateTime格式類似於: yyyy-MM-dd HH:mm:ss.fff

C#中的DateTime格式類似於: yyyy-dd-MM HH:mm:ss.fff

我使用以下代碼獲取C#DateTime格式:

 string ddd = "2012-10-10 00:00:00.000";
 dt1 = DateTime.ParseExact(ddd, "yyyy-MM-dd HH:mm:ss.fff", null);

如果嘗試將其放入yyyy-dd-MM則會收到錯誤消息:

日歷不支持由字符串表示的DateTime。

在我的C#應用​​程序中,我正在嘗試查找破損日期之間的總小時數。 我有點想工作了,但它只適用於01到12之間的日期。

因此,像從2012-01-102012-10-10 (TEN天)會給我從數據庫總學時的正確的金額。

但是,當我將2012-01-10寫入2012-14-10 (十四天)時,出現錯誤:

從char數據類型轉換為datetime數據類型導致超出范圍”

先感謝您。

PS。 您能建議一種更簡單的日期獲取方式嗎?

MySQL查詢

string CommandText = "SELECT * FROM date_test WHERE id = '4' AND date BETWEEN '" + dt1 + "' AND '" + dt2 + "'";

我已經解決了問題,但沒有解決方案。

問題在於SQL數據庫查看格式,並要求yyyy-MM-dd,但是C#只能發送yyyy-dd-MM。

為什么ParseExact()無法做yyyy-MM-dd?

您正在為SQL注入做好准備。
也看這里 有一個參數化查詢的示例。

日歷不支持由字符串表示的DateTime。

之所以出現此錯誤,是因為您的C#應用​​程序將日期2012-14-10視為第14th個月, 10th天和10th 2012th year 白天和一年的工作都可以找到,但是月份卻找不到。 此外,不要嘗試更改C#應用程序如何查看日期,這是基於系統的文化。

您對如何定義 DateTime對象以及如何顯示它感到困惑。

由於您將日期存儲為SQL中的DateTime ,因此我沒有充分的理由相信您需要進行任何類型的解析。 考慮下面的代碼示例。

var dataTable = new DataTable();
var dataAdapter = new SqlDataAdapter("SELECT * FROM YourTable", "{connection string}");

dataAdapter.Fill(dataTable);

var yourDate = dataTable.Rows[0]["Date"]; <=== the type will be DateTime, simple.

添加參數

讓我們以示例查詢為例:

“ SELECT * FROM date_test WHERE id ='4'AND日期介於'” + dt1 +“'AND'” + dt2 +“'”;

讓我們對其進行修復,請考慮以下示例:

var dataTable = new DataTable();
var dataAdapter = new SqlDataAdapter("SELECT * FROM date_test WHERE id = @ID AND date BETWEEN @StartDate AND @EndDate", "{connection string}");

dataAdapter.SelectCommand.Parameters.AddWithValue("@ID", "4");
dataAdapter.SelectCommand.Parameters.AddWithValue("@StartDate", new DateTime(2012, 10, 1));
dataAdapter.SelectCommand.Parameters.AddWithValue("@EndDate", new DateTime(2012, 10, 14));

dataAdapter.Fill(dataTable);

var yourDate = dataTable.Rows[0]["Date"]; <=== the type will be DateTime, simple.

暫無
暫無

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

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