2017-10-17 82 views
-3

我從我的存儲過程返回UTC日期時間,這樣甲骨文的DateTime到C#日期時間

SELECT CAST(SYS_EXTRACT_UTC(SYSTIMESTAMP) AS DATE) INTO utc_date FROM DUAL; 

我回來在我的SP Out參數,輸出參數類型是時間戳,因爲我想時間也是如此。 這是我如何從SP獲取返回的參數

DbParameter param25 = GetDbParameter("my_utc_date" , DbType.DateTime2 , DBNull.Value); 
          param25.Direction = ParameterDirection.Output; 
          param25.Size = 100; 
          cmd.Parameters.Add(param25);  

現在我想param25迄今爲止時間的值轉換,我想這一點,但它給我的格式異常「字符串未被識別爲有效約會時間。」

DateTime.ParseExact(Convert.ToString(param25.Value), "d/M/yyyy" , System.Globalization.CultureInfo.GetCultureInfo("en-US")); 

我也試過使用DbType.DateTime,但同樣的錯誤。

我得到的param.Value這個值,

17-OCT-17 07.07.35.000000 AM 

我怎麼能轉換日期時間甲骨文到C#日期時間,以時間爲好。

+0

那麼你顯示的格式是dM-yyy hh.mm.ss.ffffff,或許你應該試試看作爲你的格式字符串,因爲你的日期中沒有「/」 – BugFinder

+0

我試過用dM-yyy,但還是一樣問題 – Salman

+0

使用ParseExact(https://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx)您必須提供一種格式,您給'd/M/yyyy'但它應該是像'dd-MMM-yy hh.mm.ss.FFFFF tt' – EpicKip

回答

0

試一試像這樣的:

var param25 = new OracleParameter("my_utc_date", OracleDbType.Date); 
param25.Direction = ParameterDirection.Output; 
param25.DbType = DbType.DateTime; 
cmd.Parameters.Add(param25); 

cmd.ExecuteNonQuery(); 

var result = param25.Value; 
// or -> DateTime result = (DateTime)param25.Value; 

.Size不需要日期時間類型。請注意,對於OracleParameter,您有財產OracleDbTypeDbType。他們的默認值是VARCHAR2String,這就是您取回字符串而不是DATE值的原因。