2010-12-11 15 views
0

insérer dans une base de données Oracle table en utilisant la chaîne d'insertion suivante (environ - Il y a 140 colonnes, donc je ne vais pas montrer tout):Oracle conversion de la date ISO à jour des paramètres régionaux de l'ordinateur/heure

« INSERT INTO AMS_ASSET_CS_IFACEOUT VALUES ('abcdef', 'abcdef', to_date ('2010-01-31', 'AAAA-MM-JJ'), ...) "

Ensuite, quelques secondes plus tard, j'exécute l'extrait de code suivant :

/// <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; 
    } 

La valeur de ce jour, j'inséré dans ma base de données est maintenant retourné comme « 31/01/2010 12:00:00 AM ».

Je ne suis pas entièrement sûr pourquoi ... Quelles sont mes options? Ai-je besoin de code juste une conversion du format que je me fais Rendue dans ISO

Cordialement,

Sean Anderson

Répondre

1

Depuis que vous avez inséré dans la base de données en utilisant une définition claire « AAAA-MM-JJ » format date, il est correctement stocké dans la base de données. Lorsque vous lisez et affichez cette date, le format dépend de vos paramètres régionaux.

Je vous suggère d'utiliser un spécificateur de format explicite pour l'affichage.

+0

Juste pour confirmer, ce serait un moyen acceptable de résoudre ce problème? [IgnoreFirst] [DelimitedRecord ("")] [Serializable] public class AmsAsset { chaîne publique assetnum {get; ensemble; } public string changeby {get; ensemble; } public string changed { get { return String.Format ("{0: AAAA-MM-JJ}", changed); } { mis }} .... EDIT: ehh, formatage avéré terribles. Je vais le réparer cependant. MERCI! –