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
У німецькій версії: Extra> Voreinstellungen> Datenbank> NLS
Olivier Faucheux

9
WOW ... це було прекрасно. Не можу повірити, що я робив перетворення в selectзаяві.
Леніел Маккаферрі

15
'Не логічне налаштування' :-)
усьому світі

3
Немає! Він розшифровується як підтримка національної мови. Він використовується для визначення національної дати, номера, валюти та мови.
користувач2441441

2
Примітка: мені потрібно було знову підключитися до бази даних, щоб цей параметр
набув

35

Формат дати також можна встановити, використовуючи запит нижче: -

alter SESSION set NLS_DATE_FORMAT = 'date_format'

наприклад: alter SESSION set 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?
Натан іде

Я завжди ставлю перший рік, щоб уникнути плутанини. У США типовою послідовністю є MM-DD-YYYY. В іншому місці це DD-MM-YYYY. Проблема в тому, що ти не можеш їх розрізнити протягом днів між 1 і 12. Тому я завжди ставлю перший рік. І я ніколи не стикався з чим-небудь, що ставить рік першим, а потім також не слід за місяцем, а за днем. Він також сортує чисто як струну, що є корисним побічним ефектом.
треворський

16

З Інструменти> Налаштування> База даних> Параметр NLS та встановіть Формат дати як

DD-MON-RR HH: MI: SS


4

Це отримає вам години, хвилини та секунду. ей престо.

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 Preferences або оператор 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

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.