[英]SQL server DateTime and C# DateTime
在我的SQL Server上,我有一個非常簡單的表進行測試,該表僅包含三行: ID
, Date
和Hours
。( varchar
, DateTime
, varchar
)。
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-10
到2012-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?
日歷不支持由字符串表示的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.