2012-04-03 7 views
1

DateTimeフィールドでHourパートのみを更新する方法はありますか?そうでない場合は、Oracleの時間部分をどのように更新しますか?私はこれを試しました - >oracleのdatetimeフィールドで "hour"部分のみを更新する方法はありますか?

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'はDATEですか?これはどのように時間を更新するだけでしょうか?文字列の1日分の部分を無視したいですか(つまり、 'C_NAME'は現在C_NAMEの日が12:31:00に更新されていますか?) –

+0

はい、Justin、C_NameはDateTimeフィールドです。 12:31:00 AMここでは「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秒を減算する)、その後のためのいくつかの選択肢があります日付arithemtic。 Oracleのマニュアルは、これらのことに非常に適しています。

+0

になるはずです。返信ありがとうございます。しかしこれは無視されました私がこのようにしたら私のために働く--->更新tab_name 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 - 24時間形式ではなく12時間形式で表示していませんか? 'HH24'形式のマスクを使って時刻を表示すると、それは24時間形式で表示されるので、深夜から午前1時の間は" 00 "になります。 'HH'形式のマスクを使って時間を表示すると、12時間形式で表示されるので、時間は常に1から12の間になります。データベースでは、日付はフォーマットで保存されません。同じ人間以外の可読なパックドバイナリ形式で常に格納されます。人間が読めるように日付を文字列に変換する必要があります。 –

+0

Justin、UIでLocalTimeを表示していますが、データベースには12時間形式で保存していますが、現在の主な問題は - > datetimeが6〜 6:30 AM、UIでそれはPMとして表示しています。データベースでは、私はユウが言ったようにHH24にしなければならないと思います。 – palak

関連する問題