Perbarui jam di bidang waktu dan waktu 24 jam di database Oracle

Saya mencoba memperbarui waktu di bidang datetime sebagai

UPDATE table_name 
   SET col_name=to_DATE('04/02/2012 00:12:00','MM/DD/YYYY HH24:MI:SS') 
WHERE col_name1='rer';

Setelah memperbarui di db, output seperti ini

'04/02/2012 12:12:00'

Ekstra 12 ditambahkan di bidang Jam,
bagaimana saya bisa membuatnya agar tidak menambahkan 12 tambahan ke bidang jam???


person palak    schedule 05.04.2012    source sumber
comment
Bagaimana Anda menampilkan output (Kueri apa yang Anda gunakan)?   -  person Marcin Wroblewski    schedule 06.04.2012
comment
marcin,Hanya pernyataan pilih yang saya gunakan,seperti,pilih col_name dari tab_name diikuti dengan kondisi di mana.   -  person palak    schedule 09.04.2012


Jawaban (2)


Pernyataan UPDATE OK. Itu tidak menambahkan "ekstra 12" ke kolom tanggal Anda. Satu-satunya masalah yang Anda miliki adalah menampilkan nilainya. Kolom tanggal tidak menyimpan nilainya dalam format tertentu seperti 'MM/DD/YYYY HH24:MI:SS', kolom ini berisi data biner. Saat Anda menanyakan tabel Anda dengan pernyataan seperti

SELECT col_name FROM table_name

tanggal ditampilkan menggunakan NLS_DATE_FORMAT sesi Anda, yang mungkin 'MM/DD/YYYY HH:MI:SS'. Dalam format ini tanggal Anda ditampilkan sebagai '04/02/2012 12:12:00'. Jika Anda menjalankan pernyataan berikut di sesi Anda

ALTER SESSION SET NLS_DATE_FORMAT='MM/DD/YYYY HH24:MI:SS';

dan kemudian pertanyaan Anda

SELECT col_name FROM table_name

Anda akan melihat tanggal dalam format yang Anda inginkan. Cara lainnya adalah dengan menggunakan TO_CHAR seperti

SELECT TO_CHAR(col_name, ''MM/DD/YYYY HH24:MI:SS') FROM table_name
person Marcin Wroblewski    schedule 09.04.2012
comment
Marcin, pertama-tama terima kasih atas balasannya, saya masih memiliki format tanggal yang sama bahkan setelah menjalankan pernyataan perubahan Anda, saya mencoba untuk ini-›SELECT TO_DATE('24/03/2012 00:30:00','MM/DD/ YYYY HH24:MI:SS') FROM DUAL..Masih menampilkan jam sebagai 12 saja - person palak; 09.04.2012
comment
Alat apa yang Anda gunakan untuk melakukan kueri tersebut (SQL*Plus? Pengembang PL/SQL? Pengembang SQL? Lainnya?) - person Marcin Wroblewski; 10.04.2012

Coba tebak, mungkin ada kesalahan pada string yang digunakan untuk memformat output, dengan '24' hilang dari 'HH24'. Karena Anda hanya memiliki string format untuk input (dan bukan output) yang tercantum di atas, saya tidak bisa mengatakan apakah itu masalahnya. Berikut contoh yang saya maksud.

Kueri 1:

select to_char(to_date('04/02/2012 00:12:00','MM/DD/YYYY HH24:MI:SS'), 
    'mm/dd/yyyy HH24:mi:ss') from dual;

Hasil 1:

04/02/2012 00:12:00

Kueri 2:

select to_char(to_date('04/02/2012 00:12:00','MM/DD/YYYY HH24:MI:SS'), 
    'mm/dd/yyyy HH:mi:ss') from dual;

Hasil 2:

04/02/2012 12:12:00

Untuk lebih jelasnya, menurut saya solusi untuk masalah Anda mungkin dengan memeriksa format dalam pernyataan pilihan Anda, dan memilih data Anda seperti ini:

SELECT to_char(col_name,'MM/DD/YYYY HH24:MI:SS') FROM table_name WHERE col_name1='rer';
person user506069    schedule 05.04.2012
comment
:Saya rasa bukan ini masalahnya, meskipun ini memberi Anda jawaban yang benar tetapi ketika saya mencoba menjalankan pembaruan menggunakan hh:mi:ss dan waktu 00:12:00 itu memberi saya ORA-08149 hour must be between 1 and 12 - person Gaurav Soni; 06.04.2012
comment
Maksud saya dia tidak menggunakan string format seperti hh:mi:ss dalam pernyataan pembaruannya, saya kira dia mungkin menggunakannya dalam pernyataan pemilihan yang tidak ditampilkan di atas. Dalam hal ini dia akan menyimpan waktu yang benar di tabelnya, tetapi formatnya akan salah saat dia menggunakan pilih dan to_char untuk melihatnya. Saya tidak berpikir Anda akan mendapatkan ORA-08149 pada pernyataan seperti select to_char(#dateTimeField#, 'mm/dd/yyyy HH:mi:ss') from #tableName# - person user506069; 06.04.2012
comment
:ya kita tidak akan mendapatkan kesalahan di atas saat selecting tetapi seperti yang disebutkan olehnya, dia perlu memperbarui pernyataan dengan waktu 00:12:00, jadi pembaruan gagal dalam kasus itu dan menyebabkan kesalahan di atas. Dalam kasus saya HH24:MI:SS berfungsi untuk saya dan mendapatkan hasil yang diinginkan 04/02/2012 00:12:00 .Saya rasa ini harus terkait dengan parameter NLS_DATE_FORMAT di kamus data v$parameter. - person Gaurav Soni; 06.04.2012
comment
Dia tidak pernah menyebutkan mendapatkan pengecualian saat menjalankan pembaruan. Masalahnya adalah output miliknya terlihat salah. Saya hanya menebak mungkin dia salah memformat output. Jika dia menggunakan hh24:mi:ss pada update tetapi hh:mi:ss pada select dapat menimbulkan masalah yang disebutkan. Tapi saya setuju itu mungkin sesuatu yang lain sama sekali. - person user506069; 06.04.2012
comment
:Itulah yang saya katakan, saya mendapatkan pengecualian ini sambil meletakkan hh:mi:ss.Mungkin Anda salah mengartikan apa yang saya katakan. Bagaimanapun perlu mencari solusi untuk itu. - person Gaurav Soni; 06.04.2012
comment
Gaurav, akum getting the error you specified only when I try to update like this->UPDATE IWISHMASTER SET ED=to_DATE('04/02/2012 00:12:00','MM/DD/YYYY HH:MI:SS') WHERE WT='rer' Nothing much isudah mengubahnya. - person palak; 06.04.2012
comment
Bila tidaks "00:12:00" we wonbisa menggunakan format HH:MI:SS - person palak; 06.04.2012
comment
Kueri apa yang Anda gunakan untuk memilih data untuk keluaran? - person user506069; 06.04.2012
comment
Cukup pernyataan pilih, seperti, pilih col_name dari tab_name diikuti dengan kondisi di mana. - person palak; 09.04.2012