2015-04-21 5 views
3

В моем столе table1 есть столбец date_txt, который включает в себя 2/16/2011 12:00:00 AM - столбец date_txt is VARCHAR2 (250 Char).sql oracle дата обновления

Мой стол table1 также имеет столбец date, который является DATE.

Я хотел бы "обновить" мое поле:

Конечный результат должен быть:

table1:

date 

2/16/2011 

Так происходит из table1date_txt "Дата" и обновлений в колонку date в качестве даты.

Любые идеи? Я - кровавый начинающий.

+0

Посмотрите на функцию TO_DATE http://www.techonthenet.com/oracle/functions/to_date.php – DSF

+0

Почему дата магазин/время в столбцы varchar? Зачем хранить одни и те же данные дважды? – jarlh

+0

@jarlh Я импортировал дату из файла excel, который теперь является varchar, но я хочу, чтобы он находился в другом столбце в качестве даты – piguy

ответ

2

Вы можете использовать Oracle, to_date function, чтобы преобразовать строку в дату:

update table1 set "date" = to_date(date_txt, 'MM/DD/YYYY HH:MI:ss AM') 

See it working at SQL Fiddle.

+0

Спасибо - мне пришлось добавить немного, чтобы исправить мою проблему: 'MM/DD/YYYY HH: MI: ss AM' – piguy

0

Попробуйте следующее:

update table1 set date= 
    (select to_date(date_txt,'dd/mm/yyyy') from table1 where id=yourId) where id=yourId; 

Используйте столбцы первичного ключа для идентификаторов.

Если это то, что вам нужно каждый раз. Я хотел бы предложить вам использовать Triggers

+0

Здесь не требуется подзапрос? – Andomar

+0

OP хочет выбрать дату и обновить ее. –

+0

Да, и для этого вам не нужен подзапрос :) См. Мой ответ для примера – Andomar

1

колонке date_txt, который включает в себя 2/16/2011 12:00 : 00 AM

  • Во-первых, ДАТА не имеет формат. Что вы видите для дисплей цель для толкования значения даты легко.

  • Во-вторых, вы должны никогда не храните DATE как VARCHAR2. Это большая проблема и плохой дизайн.

Теперь, когда у вас плохой дизайн, это хорошая идея исправить его прямо сейчас.

Выполните следующие действия:

  1. Добавить новый столбец с ДАТЫ типа данных.
  2. Обновите новый столбец значениями даты из старого столбца, используя TO_DATE.
  3. Капля Старая колонка.
  4. Переименовать новый столбец в старый столбец.

Я уже ответил, как сделать это здесь https://stackoverflow.com/a/29625772/3989608

Смежные вопросы