我在數據表中有一個列,其日期格式爲dd/MM/yyyy HH:mm
。我使用下面的代碼來填充數據表,這對於多個select語句是很常見的,所以在填充數據表之前我不能指定列和它們的數據類型。填寫完數據後的任何操作都可以接受。Datatable計算方法將字符串列轉換爲日期
data_adapt = New OracleDataAdapter(query, OraConn)
dt = New DataTable
data_adapt.Fill(dt)
對於尋呼我創建一個使用數據表的複製跳過,並採取如下
dtLineupCopy = New DataTable
dtLineupCopy = dtLineup.AsEnumerable().Skip(startRows).Take(pageSize)).CopyToDataTable()
現在的問題是,當我使用計算方法,它不會將列值作爲日期類型和從列中返回一些隨機日期值而不是最小值。
Arvdate = dtLineupCopy.Compute("Min(Arrivaldate)", "")
有沒有辦法轉換列的數據類型?
另外嘗試添加日期時間類型的新列,但它拋出錯誤System.FormatException: String was not recognized as a valid DateTime
dtLineupCopy.Columns.Add("ArvDate", getType(DateTime), "CONVERT(Arrivaldate, 'System.DateTime')")
數據在dtLineupCopy的Arrivaldate柱。
22/09/2012 01:02
27/09/2012 17:01
1/10/2012 1:02
13/10/2012 7點26
14/10/2012 19 :47
20/10/2012 00:00
20/10/2012 00:00
日期格式不應該是轉換問題。我懷疑數據庫中有一些垃圾,即「Arrivaldate」列中的字符串不符合格式。 –
@GertArnold我已經添加了上面的數據。請看看格式。這與文化有什麼關係? – Nilanjan
我可以填寫一個數據表與一個DateTime列與您在一些相當古怪(對我)文化中提供的值。使用字符串列和計算列,即使AM/PM在時間組件中,CONVERT也可以在任何文化中吞下它。你確定數據庫表中的任何地方都沒有垃圾字符串,或者到目前爲止是否有這些值? –