как вставить текущую дату в поле ДАТА в формате дд / мм / гггг в оракуле - PullRequest
2 голосов
/ 08 января 2011

В моей таблице есть поле с типом данных DATE в Oracle. Я хочу вставить текущую дату в это поле в формате ДД / ММ / ГГГГ.

Я попробовал следующий запрос:

select to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy') from dual

Но это дает

1/8/2011 12:00:00 AM.

Я хочу вставить и показать как

08/01/2011 12:00:00 AM.

Может кто-нибудь помочь мне в этом, пожалуйста?

Ответы [ 4 ]

15 голосов
/ 08 января 2011

DATE - это встроенный тип в Oracle, который представлен фиксированным образом, и вы не можете его контролировать.

Итак:

Я хочу этовставить [...] как 08/01/2011 12:00:00 AM

Выше не имеет смысла.Вы не вставляете строку, вы вставляете дату.

Формат полезен только тогда, когда вы хотите:

  • для преобразования строки во внутреннее представление даты с помощью TO_DATE(маска формата: как разобрать строку);
  • для преобразования внутреннего представления даты в строку с TO_CHAR (маска формата: как отобразить дату).

Таким образом, в основном, в вашем примере вы берете DATE, вы конвертируете его в STRING с некоторым форматом и конвертируете обратно в DATE с тем же форматом.Это не работает.

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

То, что вы хотите, это SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM dual;, который будет явно выполнять преобразование и возвращать строку.

И когда вы хотите вставить дату в базу данных, вы можете использовать TO_DATE или литералы даты.

2 голосов
/ 08 января 2011

В качестве альтернативы, если вы хотите получить часть даты поля DATE, вы можете использовать усечение, например

select to_char(trunc(sysdate),'dd/mm/yyyy') from dual;
1 голос
/ 08 января 2011

Когда столбец имеет тип DATE, вы можете использовать что-то вроде:

Insert into your_table(your_date_column) Select TRUNC(SYSDATE) from DUAL;

Это удаляет временную часть из SYSDATE.

0 голосов
/ 10 декабря 2013

Может быть, это может помочь

insert into pasok values ('&kode_pasok','&kode_barang','&kode_suplier',
to_date('&tanggal_pasok','dd-mm-yyyy'),&jumlah_pasok);

примечание: '&' помогите нам снова вставить данные, вставьте / завершите, затем введите вставьте снова пример: введите значение для kode_pembelian: BEL-E005 Enter значение для kode_barang: ELK-02 Введите значение для kode_customer: B-0001 старый 2: '& kode_pembelian', '& kode_barang', '& kode_customer', новый 2: 'BEL-E005', 'ELK-02', 'B-0001', введите значение для tanggal_pembelian: 24-06-2002 Введите значение для jumlah_pembelian: 2 old 3: to_date ('& tanggal_pembelian', 'dd-mm-yyyy') и & jumlah_pembelian) new 3: to_date ('24 -06-2002' , 'дд-мм-гггг'), 2)

Создана 1 строка.

SQL> / (введите)

...