Формат даты импорта mmddyyyy - PullRequest
1 голос
/ 07 мая 2009

Я должен импортировать даты в оракул с этим типом формата

03JUN2008

Единственный пример, который я видел, как это было сделано ранее, имеет тире, а этого нет.

Должен ли я просто внести это как varchar и манипулировать, или есть другой способ?

Спасибо

Ответы [ 3 ]

3 голосов
/ 07 мая 2009

Если это дата, то храните ее как дату, не беспокойтесь о том, чтобы хранить ее как varchar или какую-то ерунду.

Как именно вы планируете «импортировать» данные?

Если вы просто используете SQL-операторы, используйте TO_DATE

MWATSON@:> create table date_test ( x date );

Table created.

MWATSON@:> insert into date_test values ( to_date('03JUN2008','DDMONYYYY') );

1 row created.

MWATSON@:> select * from date_test;

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

1 row selected.

MWATSON@DEV2:>

Если вы импортируете через SQL * Loader, вы можете указать формат даты в контрольном файле

> 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.

MWATSON@:> 
2 голосов
/ 07 мая 2009

Не знаю, правильно ли я понял, что вы имеете в виду, но я думаю, что вы можете сделать это просто с помощью TO_DATE, примеров и подробностей здесь

http://www.techonthenet.com/oracle/functions/to_date.php

0 голосов
/ 13 мая 2009

Чтобы получить хороший ответ, вы должны заранее подумать, что вы собираетесь делать с этими датами в контексте того, как Oracle хранит даты внутри.

Например, если вы делаете

to_date('03JUN2008','DDMONYYYY')

Как предположил Мэтью, вы действительно получите:

03-JUN-2008 00:00:00

Почему это может быть проблемой? Допустим, вы используете эту дату для проверки на конец дня, например, для подсчета всех комментариев пользователей, отправленных до, включая 06.06.2008. Если вы сравните с вышеуказанной датой, вы в конечном итоге исключите все комментарии, сделанные в эту дату, поскольку все они будут сделаны в 00:00 плюс часы.

Так что в этом случае вам нужно будет добавить время, чтобы оно действительно закончилось, например:

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

, который даст вам:

03-JUN-2008 23:59:59
...