0

EPOCH を HUMAN DATETIME に変換しようとしています。

  • 彼らのウェブサイトでこれをテストすると、正しい値が返されます。
  • SQL Developer内でそれを行うと、間違っています。

これにより、他の基本的なSQLをチェックして、それらがどのように返されるかを確認しました。

select sysdate from dual = 12-OCT-2015

時間が足りない?

SELECT TO_CHAR(TO_DATE('2015/05/15 8:30:25', 'YYYY/MM/DD HH:MI:SS'))
FROM dual; 

= 15-MAY-15 

再びその時間がありませんか?

SELECT TO_DATE('2015/05/15 8:30:25', 'YYYY/MM/DD HH:MI:SS')
FROM dual; 

= 15-MAY-15 

TO_CHAR がないと、まだ時間がありません。

それから私のEPOCH SQL、

SELECT TO_DATE('01/01/1970 00:00:00','DD/MM/YYYY HH24:MI:SS')+(1325289600000/60/60/24) AS EPOCH FROM dual;

これは次を返すはずです: Sat, 31 Dec 2011 00:00:00 GMT しかし、次を返します: 04-OCT-30

繰り返しますが、TIME がありません。

SERVER は EST にあるため、タイムアウトは 5 時間です Oracle Server 11g SQL DEveloper 4.0.2.15 を使用

助けてくれてありがとう、ベン

4

4 に答える 4

2

時間を出力するには、マスクを TO_CHAR 関数にも含める必要があります。

SELECT TO_CHAR(TO_DATE('2015/05/15 8:30:25', 'YYYY/MM/DD HH:MI:SS'), 'YYYY/MM/DD HH:MI:SS')
FROM dual;

ただし、文字列になります。この日付で何かをしたい (何かを追加するなど) 場合は、TO_CHAR を最後に配置する必要があります (最初に日付ですべてを実行し、次に TO_CHAR をマスクで配置します)。

于 2015-10-12T11:20:15.173 に答える
2

その時間がありませんか?

いいえ、表示されていないだけです。または、クライアントのロケール固有の NLS 設定が、時刻部分を表示するように正しく設定されていません。

日付には常に日付部分と時刻部分の両方があり、Oracle によって 7 バイトの専用形式で内部的に格納されます。

個々の SQL レベルで、目的の形式で日付を表示するには、常にTO_DATEを適切なFORMAT MODELと共に使用します。

例えば、

セッションレベル

SQL> alter session set nls_date_format='YYYY-MM-DD';

Session altered.

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
----------
2015-10-12

SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';

Session altered.

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
-------------------
2015-10-12 17:08:18

個々の SQL レベルは、セッションとクライアントの NLS 設定を上書きします。

SQL> SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') FROM DUAL;

TO_CHAR(SYSDATE,'YY
-------------------
2015/10/12 17:09:58
于 2015-10-12T11:41:35.430 に答える
0

正しい値を返しますが、SQL 開発者はそれを正しく表示するように設定されていません。

この回答から:

これは設定で変更できます。

  1. Oracle SQL Developer のメニューから、[ツール] > [設定] に移動します。
  2. 「プリファレンス」ダイアログで、左側のパネルから「データベース」 > 「NLS」を選択します。
  3. NLS パラメータのリストから、DD-MON-RR HH24:MI:SS[日付形式] フィールドに入力します。
  4. ダイアログを保存して閉じます。

(私は ISO 標準形式YYYY-MM-DD HH24:MI:SSを好みますが、どちらでも構いません。)

次に、次のようにします。

SELECT TO_DATE('01/01/1970 00:00:00','DD/MM/YYYY HH24:MI:SS')
         +(1325289600000/60/60/24) AS EPOCH
FROM dual;

DD-MON-RR HH24:MI:SSformatの出力は次のようになります。

EPOCH            
------------------
04-OCT-30 00:00:00 

出力は次のYYYY-MM-DD HH24:MI:SSようになります。

EPOCH             
-------------------
4030-10-04 00:00:00 
于 2015-10-12T11:36:56.090 に答える