2009-05-06 9 views
1

Je dois importer des dates dans Oracle avec ce type de formatImportation Format de date mmjjaaaa

03JUN2008

Le seul exemple que je l'ai vu faire auparavant tirets et ce qui ne fonctionne pas.

Est-ce que je devrais l'apporter comme varchar et manipuler ou est-ce qu'il y a un autre moyen?

Merci

Répondre

3

Si sa date , puis le stocker comme une date, ne plaisante pas avec le stocker comme un varchar ou n'importe quelle absurdité comme ça.

Comment pensez-vous exactement «importer» les données?

Si vous utilisez seulement des instructions SQL, utilisez TO_DATE

[email protected]:> create table date_test (x date); 

Table created. 

[email protected]:> insert into date_test values (to_date('03JUN2008','DDMONYYYY')); 

1 row created. 

[email protected]:> select * from date_test; 

X 
----------- 
03-Jun-2008 

1 row selected. 

[email protected]:> 

Si vous importez via SQL * Loader vous pouvez spécifier le format de date dans le fichier de contrôle

> cat date_test.ldr 
LOAD DATA 
INFILE * 
APPEND 
INTO TABLE date_test 
FIELDS TERMINATED BY '|' 
(x DATE 'DDMONYYYY') 
BEGINDATA 
01JAN1999 
> sqlldr mwatson control=date_test.ldr 
.... 
Commit point reached - logical record count 1 
> sqlplus 
.... 
MWATSON:> select * from date_test; 

X 
----------- 
03-Jun-2008 
01-Jan-1999 

2 rows selected. 

[email protected]:> 
+0

Merci qui est ce que je à la recherche de. – homerjay

0

Pour obtenir une bonne réponse, vous devez penser à l'avance ce que vous allez faire avec ces dates dans le contexte de la façon dont Oracle stocke les dates en interne.

Par exemple, si vous faites

to_date('03JUN2008','DDMONYYYY') 

comme Matthew a suggéré, ce que vous allez vraiment faire est:

03-JUN-2008 00:00:00 

Pourquoi serait-ce un problème? Supposons que vous utilisiez cette date pour tester la fin de la journée, par exemple en comptant tous les commentaires des utilisateurs soumis jusqu'au 06/03/2008 inclus. Si vous comparez avec la date ci-dessus, vous finirez par exclure tous les commentaires faits à cette date puisqu'ils seront tous faits à 00:00 plus les heures.

Donc, dans ce cas, vous devrez ajouter le temps de le faire fin vraiment de la journée, par exemple:

to_date('03JUN2008','DDMONYYYY')+0.999988425925926 

qui vous donnera:

03-JUN-2008 23:59:59