อัปเดตชั่วโมงในฟิลด์ datetime 24 ชั่วโมงในฐานข้อมูล oracle

ฉันกำลังพยายามอัปเดตเวลาในฟิลด์ datetime เป็น

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

หลังจากอัพเดตใน db แล้ว output จะเป็นเช่นนี้

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

12 พิเศษกำลังเพิ่มในฟิลด์ Hour
ฉันจะทำให้สิ่งนี้ไม่เพิ่ม 12 พิเศษในฟิลด์ชั่วโมงได้อย่างไร


person palak    schedule 05.04.2012    source แหล่งที่มา
comment
คุณจะแสดงผลอย่างไร (คุณใช้แบบสอบถามอะไร)   -  person Marcin Wroblewski    schedule 06.04.2012
comment
marcin แค่คำสั่ง select ที่ฉันใช้ เช่น เลือก col_name จาก tab_name ตามด้วยตำแหน่งที่เงื่อนไข   -  person palak    schedule 09.04.2012


คำตอบ (2)


คำสั่ง UPDATE ก็โอเค ไม่ได้เพิ่ม "พิเศษ 12" ลงในคอลัมน์วันที่ของคุณ ปัญหาเดียวที่คุณมีคือการแสดงค่า คอลัมน์วันที่ไม่ได้เก็บค่าในรูปแบบเฉพาะใดๆ เช่น 'MM/DD/YYYY HH24:MI:SS' โดยมีข้อมูลไบนารีอยู่ เมื่อคุณสอบถามตารางของคุณด้วยคำสั่งเช่น

SELECT col_name FROM table_name

วันที่จะแสดงโดยใช้ NLS_DATE_FORMAT ของเซสชันของคุณ ซึ่งอาจเป็น 'MM/DD/YYYY HH:MI:SS' ในรูปแบบนี้วันที่ของคุณจะแสดงเป็น '04/02/2012 12:12:00' หากคุณเรียกใช้คำสั่งต่อไปนี้ในเซสชันของคุณ

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

แล้วคำถามของคุณ

SELECT col_name FROM table_name

คุณจะเห็นวันที่ในรูปแบบที่คุณต้องการ วิธีอื่นคือใช้ TO_CHAR like

SELECT TO_CHAR(col_name, ''MM/DD/YYYY HH24:MI:SS') FROM table_name
person Marcin Wroblewski    schedule 09.04.2012
comment
Marcin ก่อนอื่นต้องขอขอบคุณสำหรับการตอบกลับ ฉันยังคงมีรูปแบบวันที่เดียวกันแม้ว่าจะเรียกใช้คำสั่งแก้ไขแล้วก็ตาม ฉันลองทำเช่นนี้->SELECT TO_DATE('03/24/2012 00:30:00','MM/DD/ YYYY HH24:MI:SS') FROM DUAL..ยังคงแสดงชั่วโมงเป็น 12 เท่านั้น - person palak; 09.04.2012
comment
คุณใช้เครื่องมือใดในการดำเนินการค้นหาเหล่านั้น (SQL*Plus? PL/SQL Developer? SQL Developer? other?) - person Marcin Wroblewski; 10.04.2012

เพียงแค่เดา ​​อาจมีข้อผิดพลาดในสตริงที่ใช้ในการจัดรูปแบบเอาต์พุต โดยที่ '24' หายไปจาก 'HH24' เนื่องจากคุณมีเพียงสตริงรูปแบบสำหรับอินพุต (ไม่ใช่เอาต์พุต) ที่ระบุไว้ข้างต้น ฉันจึงไม่สามารถพูดได้ว่าเป็นกรณีนี้หรือไม่ นี่คือตัวอย่างของสิ่งที่ฉันหมายถึง

ข้อความค้นหา 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;

ผลลัพธ์ 1:

04/02/2012 00:12:00

ข้อความค้นหา 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;

ผลลัพธ์ 2:

04/02/2012 12:12:00

เพื่อให้ชัดเจน ฉันคิดว่าวิธีแก้ปัญหาของคุณอาจเป็นการตรวจสอบรูปแบบในคำสั่ง Select ของคุณ และเลือกข้อมูลของคุณดังนี้:

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
: ฉันไม่คิดว่าจะไม่เป็นเช่นนั้น แม้ว่ามันจะให้คำตอบที่ถูกต้องแก่คุณ แต่เมื่อฉันพยายามที่จะดำเนินการอัปเดตโดยใช้ hh:mi:ss และเวลา 00:12:00 มันให้ฉัน ORA-08149 hour must be between 1 and 12 - person Gaurav Soni; 06.04.2012
comment
ฉันไม่ได้หมายความว่าเขาใช้สตริงรูปแบบเช่น hh:mi:ss ในคำสั่ง update ของเขา ฉันเดาว่าเขาอาจจะใช้มันในคำสั่ง select ที่ไม่ได้แสดงไว้ด้านบน ในกรณีนั้นเขาจะมีเวลาที่ถูกต้องเก็บไว้ในตารางของเขา แต่จะมีการจัดรูปแบบไม่ถูกต้องเมื่อเขาใช้ select และ to_char เพื่อดูข้อมูล ฉันไม่คิดว่าคุณจะได้รับ ORA-08149 ในคำสั่งเช่น select to_char(#dateTimeField#, 'mm/dd/yyyy HH:mi:ss') from #tableName# - person user506069; 06.04.2012
comment
:yes เราจะไม่ได้รับข้อผิดพลาดข้างต้นในขณะที่ selecting แต่ตามที่เขากล่าวไว้ เขาจำเป็นต้องอัปเดตคำสั่งด้วยเวลา 00:12:00 ดังนั้นการอัปเดตจึงล้มเหลวในกรณีนั้นและทำให้เกิดข้อผิดพลาดข้างต้น ในกรณีของฉัน HH24:MI:SS ใช้งานได้สำหรับฉันและ รับผลลัพธ์ที่ต้องการ 04/02/2012 00:12:00 ฉันคิดว่าสิ่งนี้จะต้องเกี่ยวข้องกับพารามิเตอร์ NLS_DATE_FORMAT ในพจนานุกรมข้อมูล v$parameter - person Gaurav Soni; 06.04.2012
comment
เขาไม่เคยพูดถึงการได้รับข้อยกเว้นเมื่อดำเนินการอัปเดต ปัญหาคือ output ของเขาดูผิด ฉันแค่เดาว่าบางทีเขาอาจจัดรูปแบบเอาต์พุตไม่ถูกต้อง หากเขาใช้ hh24:mi:ss บน update แต่ hh:mi:ss บน select ก็อาจทำให้เกิดปัญหาตามที่กล่าวไว้ได้ แต่ฉันยอมรับว่ามันอาจจะเป็นอย่างอื่นโดยสิ้นเชิง - person user506069; 06.04.2012
comment
:นั่นคือสิ่งที่ฉันพูด ฉันได้รับข้อยกเว้นนี้ในขณะที่ใส่ hh:mi:ss คุณอาจตีความสิ่งที่ฉันพูดผิด ยังไงก็ต้องหาทางแก้ไข - person Gaurav Soni; 06.04.2012
comment
Gaurav ฉันm 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 iได้เปลี่ยน Ive remoived 24 from HH24 tats แล้ว - person palak; 06.04.2012
comment
เมื่อs "00:12:00" we wonไม่สามารถใช้รูปแบบ HH:MI:SS ได้ - person palak; 06.04.2012
comment
คุณใช้แบบสอบถามใดในการเลือกข้อมูลสำหรับเอาต์พุต - person user506069; 06.04.2012
comment
เพียงแค่เลือกคำสั่งเช่นเลือก col_name จาก tab_name ตามด้วยเงื่อนไขที่ไหน - person palak; 09.04.2012