2009-05-06 2 views
1

Ich habeImport Date Format mmddyyyy

03JUN2008

Das einzige Beispiel, das ich dies getan gesehen haben, bevor Sie mit dieser Art von Format Daten in Oracle importieren muss Striche und dies nicht tut.

Soll ich es einfach als varchar einbringen und manipulieren oder gibt es einen anderen Weg?

Dank

Antwort

3

Wenn sie ein Datum zu tun , dann speichern Sie es als ein Datum, machen Sie sich nicht damit herum, es als Varchar oder irgendeinen anderen Unsinn zu speichern.

Wie genau planen Sie, die Daten zu "importieren"?

Wenn Sie nur SQL-Anweisungen verwenden, dann verwenden 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]:> 

Wenn Sie über SQL * Loader importieren Sie das Datumsformat in der Steuerdatei zu

> 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

Danke das ist, was ich Auf der Suche nach. – homerjay

0

Um angeben Wenn Sie eine gute Antwort erhalten, müssen Sie im Voraus darüber nachdenken, was Sie mit diesen Daten im Zusammenhang mit der internen Speicherung von Daten durch Oracle tun werden.

Zum Beispiel, wenn Sie

to_date('03JUN2008','DDMONYYYY') 

tun, wie Matthew vorgeschlagen, was Sie wirklich bekommen, ist:

03-JUN-2008 00:00:00 

Warum dies ein Problem sein würde? Nehmen wir an, Sie verwenden dieses Datum zum Testen gegen das Tagesende, z. B. das Zählen aller Benutzerkommentare, die bis einschließlich 06/03/2008 eingereicht wurden. Wenn Sie mit dem oben genannten Datum vergleichen, schließen Sie alle Kommentare ab, die an diesem Datum gemacht wurden, da sie alle um 00:00 plus Stunden erstellt werden.

Also in diesem Fall müssen Sie die Zeit hinzufügen, um es wirklich von Tag beenden zu machen, zum Beispiel:

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

, die Sie:

03-JUN-2008 23:59:59