2012-04-03 2 views
1

Есть ли способ обновить только часовую часть в поле DateTime? Если нет, как мне обновить временную часть в Oracle? Я пробовал это ->Как обновить только «час» в поле datetime в oracle?

update tab_name 
set C_Name=to_date('04/03/2012 00:31:00','MM/DD/YYYY HH:MI:SS AM') 
where C_Name1=10484; 

не работал, так как я обновляю «00» в части Часа.

+0

Добро пожаловать в переполнение стека! Я позволил вам форматировать ваш вопрос. В будущем, пожалуйста, отформатируйте свои вопросы, прежде чем отправлять их. –

+0

Является ли 'C_NAME' ДАТА? Как это только обновит время? Вы хотите, чтобы дневная часть строки была проигнорирована (т. Е. Обновить 'C_NAME' как любой день' C_NAME' в настоящее время в 12:31:00 AM?) –

+0

yeah Justin, C_Name - поле DateTime.No, я не хочу, чтобы все было проигнорировано здесь, как сказал Юй 12:31:00 здесь только «12» нужно заменить на «00», это должно быть 00:31:00 AM – palak

ответ

1

Если бы я знал, что хочу обновить только одну часть времени, я бы, вероятно, конвертировал в строку со значением, которое я хочу в соответствующем месте, а затем конвертируем обратно в дату. Скажем, я хотел минуты, чтобы быть «31»:

update tab_name 
set C_Name= 
    to_date( 
    to_char(C_Name, 'MM/DD/YYYY HH24:"31":SS'), 
    'MM/DD/YYYY HH24:MI:SS' 
) 
where C_Name1=10484; 

Если вы хотите изменить время часть относительно его текущего значения (добавить 2 часа или отнимите 3 секунды, к примеру), то есть некоторые варианты для дата арифметики. Документация Oracle очень хороша для этих вещей.

+0

Адам, спасибо за ответ, но это didn 't работает для меня, когда мне это нравится ---> update tab_name set C_Name = to_date (to_char (C_Name, 'MM/DD/YYYY" 00 ": HH: SS'), 'MM/DD/YYYY HH24: MI: SS '), где C_Name1 = 10484; ... Час я сделал его «00», он по-прежнему сохраняет его как «12» ... Любое решение для этого ??? – palak

+0

@palak - Вы уверены, что просто не показываете его в 12-часовом формате, а не в 24-часовом формате? Если вы отобразите время с использованием маски формата «HH24», оно будет отображаться в 24-часовом формате времени, поэтому между полуночью и 1 часом часовой пояс будет «00». Если вы отобразите время с использованием маски формата «HH», оно будет отображаться в 12-часовом формате времени, поэтому час будет всегда от 1 до 12. В базе данных даты не сохраняются в формате, они всегда хранятся в том же нечитаемом для чтения бинарном формате. Дата должна быть преобразована в строку, чтобы стать читаемой человеком. –

+0

Justin, In UI. Я показываю LocalTime, но в базе данных я сохраняю ее в 12-часовом формате, теперь главная проблема -> Когда datetime сохраняется между 6 и 6:30 утра, в пользовательском интерфейсе это отображает его как PM.I думаю, что в базе данных я должен сделать это как HH24, как сказал yu .. – palak

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