SQL Developer ส่งคืนเฉพาะวันที่ไม่ใช่เวลา ฉันจะแก้ไขได้อย่างไร


167

นี่คือสิ่งที่ SQL Develoepr มอบให้ฉันทั้งในหน้าต่างผลลัพธ์และเมื่อฉันส่งออก:

CREATION_TIME       
------------------- 
27-SEP-12
27-SEP-12
27-SEP-12

นี่คือสิ่งที่ซอฟต์แวร์อีกชิ้นหนึ่งที่เรียกใช้คิวรี / db เดียวกันให้

CREATION_TIME       
------------------- 
2012-09-27 14:44:46 
2012-09-27 14:44:27 
2012-09-27 14:43:53 

ฉันจะให้ SQL Developer กลับมาใช้เวลาได้อย่างไร

คำตอบบางส่วน:

select TO_CHAR(creation_time,'DD-Mon-YYYY HH24:MI:SS') from 

หากใครรู้วิธีตั้งค่าเริ่มต้นให้แสดงข้อมูลแบบเต็มโปรดตอบด้านล่าง

คำตอบ:


363

ลองได้ไหม

ไปที่เครื่องมือ> การตั้งค่า> ฐานข้อมูล> NLS และตั้งค่ารูปแบบวันที่เป็น MM / DD / YYYY HH24: MI: SS


8
ในเวอร์ชันภาษาเยอรมัน: พิเศษ> Voreinstellungen> Datenbank> NLS
Olivier Faucheux

9
ว้าว ... นี่มันสวยงาม ไม่อยากจะเชื่อเลยว่าฉันกำลังทำ Conversion อยู่ในselectแถลงการณ์
Leniel Maccaferri

15
'ไม่ใช่การตั้งค่าเชิงตรรกะ' :-)
worldwidejimbo

3
No! มันย่อมาจาก National Language Support มันถูกใช้เพื่อกำหนดการตั้งค่าวันชาติหมายเลขสกุลเงินและภาษา
user2441441

2
หมายเหตุ: ฉันต้องการที่จะเชื่อมต่อไปยังฐานข้อมูลสำหรับการตั้งค่านี้จะมีผล
ฟอง

35

รูปแบบวันที่สามารถตั้งค่าได้โดยใช้แบบสอบถามด้านล่าง: -

แก้ไขชุด SESSION NLS_DATE_FORMAT = 'date_format'

เช่น: แก้ไขชุดเซสชั่น NLS_DATE_FORMAT = 'DD-MM-YYYY HH24: MI: SS'


21

ในการขยายคำตอบก่อนหน้านี้บางส่วนฉันพบว่าวัตถุ Oracle DATE นั้นทำงานแตกต่างจากวัตถุ Oracle TIMESTAMP โดยเฉพาะอย่างยิ่งหากคุณตั้งค่า NLS_DATE_FORMAT ของคุณให้รวมเป็นเศษส่วนวินาทีส่วนเวลาทั้งหมดจะถูกข้ามไป

  • รูปแบบ "YYYY-MM-DD HH24: MI: SS" ทำงานตามที่คาดไว้สำหรับ DATE และ TIMESTAMP
  • รูปแบบ "YYYY-MM-DD HH24: MI: SSXFF" แสดงเฉพาะส่วนวันที่สำหรับ DATE ใช้งานได้ตามที่คาดไว้สำหรับ TIMESTAMP

การตั้งค่าส่วนตัวของฉันคือตั้ง DATE เป็น "YYYY-MM-DD HH24: MI: SS" และตั้งค่า TIMESTAMP เป็น "YYYY-MM-DD HH24: MI: SSXFF"


ขอบคุณสิ่งนี้ช่วยฉันได้อย่างมาก - ฉันเพิ่งคัดลอกรูปแบบจากการประทับเวลาและไม่เข้าใจว่าทำไมมันไม่ทำงาน
fleeblewidget

มีเหตุผล (นอกเหนือจากมาตรฐาน) ที่จะใช้YYYY-MM-DD HH24:MI:SSกับDD-MM-YYYY HH24:MI:SSหรือไม่
Nathan Goings

ฉันใส่ปีแรกเสมอเพื่อหลีกเลี่ยงความสับสน ในสหรัฐอเมริกาลำดับทั่วไปคือ MM-DD-YYYY ที่อื่นก็คือ DD-MM-YYYY ปัญหาคือคุณไม่สามารถแยกพวกเขาออกเป็นเวลาระหว่างวันที่ 1 ถึง 12 ดังนั้นฉันจะใส่ปีแรกเสมอ และฉันไม่เคยเจออะไรที่ทำให้ปีแรกโดยไม่ต้องติดตามด้วยเดือนแล้ววัน นอกจากนี้ยังเรียงลำดับอย่างหมดจดเป็นสตริงซึ่งเป็นผลข้างเคียงที่มีประโยชน์
trevorsky

16

จากเครื่องมือ> การตั้งค่า> ฐานข้อมูล> พารามิเตอร์ NLS และตั้งค่ารูปแบบวันที่เป็น

DD-MON-RR HH: MI: SS


4

คุณจะได้รับชั่วโมงนาทีและวินาที เฮ้ presto

select
  to_char(CREATION_TIME,'RRRR') year, 
  to_char(CREATION_TIME,'MM') MONTH, 
  to_char(CREATION_TIME,'DD') DAY, 
  to_char(CREATION_TIME,'HH:MM:SS') TIME,
  sum(bytes) Bytes 
from 
  v$datafile 
group by 
  to_char(CREATION_TIME,'RRRR'), 
  to_char(CREATION_TIME,'MM'), 
  to_char(CREATION_TIME,'DD'), 
  to_char(CREATION_TIME,'HH:MM:SS') 
 ORDER BY 1, 2; 

3

คำตอบเหล่านี้จะใช้ได้สำหรับฉันไม่ใช่ตัวเลือกการกำหนดค่า NLS หรือคำสั่ง ALTER นี่เป็นวิธีการเดียวที่ทำงานในกรณีของฉัน:

dbms_session.set_nls('nls_date_format','''DD-MM-YYYY HH24:MI:SS''');

* เพิ่มหลังคำสั่ง BEGIN

ฉันใช้ PL / SQL Developer v9.03.1641

หวังว่านี่จะช่วยให้ใครบางคน!


-1

ฉันพบวิธีนี้:

Oracle SQL Developer (ไอคอนด้านบนซ้าย)> ค่ากำหนด> ฐานข้อมูล> NLS และตั้งค่ารูปแบบวันที่เป็น MM / DD / YYYY HH24: MI: SS

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.