2012-10-14 84 views
2

例如:我通過一些查詢(很多不同的查詢)從數據庫中獲取myDataTable,並且想要將DateDateTime字段更改爲用戶想要的表示。c#中日期和日期時間數據類型有什麼區別

void dgv_DataSourceChanged(object sender, EventArgs e) 
{ 
    for (int i = 0; i < dgv.Columns.Count; i++) 
    { 
      if (myDataTable.Columns[i].DataType == typeof(DateTime)) 
       dgv.Columns[i].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss"; 
      else 
      { 
       if (myDataTable.Columns[i].DataType == typeof(Date)) 
        dgv.Columns[i].DefaultCellStyle.Format = "dd-MM-yyyy"; 
      } 
    } 
} 

你可以看到有與具有數據類型= DateTime列沒有問題,但我怎麼能不管我目前的數據庫查詢的處理Date的dataType?日期在數據庫中可用,但在c#中不可用。

更新:我可以通過檢查日期值天氣的結束來做到這一點,它是12:00:AM或00:00:00。但是,這似乎是一個虛假的解決方案,一個真正的DateTime值也可以具有相同的值。此值並不能保證數據類型是Date,而不是日期時間

+0

'datetime.Date == datetime' =>'true' when a date。 – leppie

回答

0

只有日期時間數據類型在C#中可以日期時間日期數據類型的SQL Sever的的。

請參見下面的數據類型映射表以供參考: SQL Server Data Type Mappings

2
foreach(DataRow dr in datatable.Rows) 
{ 
    DateTime dt = DateTime.ParseExact(dr["YourDateTimeColumnName"], 
           "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 
    string s = dt.ToString("dd/M/yyyy"); 
} 

現在您的日期時間轉換爲日期,你可以在DataGridView中使用它。

+0

Wajid Sahib!你有沒有嘗試過,因爲'myDataTable.Columns [i] .ToString()'似乎不太正確(意思是它可以不使用任何行號?) – Sami

+0

我忘了.Column []。 – 2012-10-14 18:22:50

1

也許你無法區分。你可以在這個特定的情況下做什麼是

for (int i = 0; i < dgv.Columns.Count; i++) 
{ 
    if (source.Columns[i].DataType == typeof(DateTime)) 
    { 
     string val = source.Rows[0][i].ToString(); 
     if (val.EndsWith("12:00:00 AM") ||val.EndsWith("00:00:00")) 
     { 
      dgv.Columns[i].DefaultCellStyle.Format = "yyyy-MM-dd"; 
      //Your date Format 
     } 
     else 
      dgv.Columns[i].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss"; 
      //Your date and Time Format 
    } 
} 
相關問題