2010-12-11 92 views
0

我插入到一個Oracle數據庫表使用下列插入字符串(約 - 有140列,所以我不會顯示所有):甲骨文將ISO日期到計算機的語言環境日期/時間

「INSERT INTO AMS_ASSET_CS_IFACEOUT VALUES('abcdef','abcdef',to_date('2010-01-31','YYYY-MM-DD'),...)「

然後幾秒鐘後,我運行以下代碼片段:

/// <summary> 
    /// Function: GetRecord 
    /// Description: Creates a new AMS-Asset and populates the 
    /// properties of this asset by evaluating properties provided 
    /// by the OracleDataReader. 
    /// </summary> 
    /// <param name="reader"> One record of information from the open connection.</param> 
    /// <returns> A fully created AMS-Asset record. </returns> 
    private static AmsAsset GetRecord(OracleDataReader reader) 
    { 
     AmsAsset newRecord = new AmsAsset(); 

     for (int propertyIndex = 0; propertyIndex < reader.FieldCount; propertyIndex++) 
     { 
      string propertyName = reader.GetName(propertyIndex).ToLower(); 
      string propertyValue = reader.GetValue(propertyIndex).ToString(); 
      int propertyValueAsInteger = 0; 

      bool isPropertyAnInteger = Int32.TryParse(propertyValue, out propertyValueAsInteger); 

      if (isPropertyAnInteger) 
      { 
       newRecord.GetType().GetProperty(propertyName).SetValue(newRecord, propertyValueAsInteger, null); 
      } 
      else 
      { 
       newRecord.GetType().GetProperty(propertyName).SetValue(newRecord, propertyValue, null); 
      } 
     } 

     return newRecord; 
    } 

插入到我的數據庫中的日期值現在返回爲「1/31/2010 12:00:00 AM」。

我不完全確定爲什麼......我有什麼選擇?我需要只是代碼格式的轉換,我正在給回ISO

問候,

肖恩·安德森

回答

1

由於您使用的是一個明確的「YYYY-MM-DD」插入到數據庫格式日期,它被正​​確存儲在數據庫中。

當您閱讀並顯示該日期時,格式取決於您的區域設置。

我建議你使用顯式格式說明符來顯示。

+0

只是爲了確認,這是解決這個問題的可接受的方法嗎? [IgnoreFirst] [DelimitedRecord( 「」)] [序列化] 公共類AmsAsset { 公共字符串assetnum {得到;組; } public string changeby {get;組; } public string changedate { get { return String.Format(「{0:YYYY-MM-DD}」,changedate);} } 設置 {} } .... 編輯:EHH,格式化變成了可怕的。我會修復它。謝謝! – 2010-12-11 01:33:15