0

SQL クエリを Oracle に移行しようとしていますが、DateAdd 関数が原因でクエリを変換できないようです。 STRINGVARIABLE = '1361439468476'

出力は次のとおりです。Feb 20,2013

convert (char(12), (dateadd(s, convert(bigint, STRINGVARIABLE) / 1000, convert(datetime, '1-1-1970 00:00:00'))), 107) 
4

1 に答える 1

1

DATEADDオラクルには存在しません。日付を操作するにはさまざまな方法がありますが、これはかなり簡単です。

select date '1970-01-01' + (to_number('1361439468476') / (1000*60*60*24))
from dual;

DATE'1970
---------
21-FEB-13

...これは実際には21/02/2013 09:37:48、なぜあなたがそれを持っているのか分かりません20-FEB-13

ミリ秒の精度を維持したい場合は、TIMESTAMP代わりにa を使用できます。

select timestamp '1970-01-01 00:00:00'
    + numtodsinterval(to_number('1361439468476')/1000, 'SECOND')
from dual;

TIMESTAMP'1970-01-0100:00:00'+NUMTODSINTERVAL(TO_NUMBER('1361439468476')/10
---------------------------------------------------------------------------
21-FEB-13 09.37.48.476000000

あなたのクエリで何をしているの107か、または変換しているのかわかりませんが、おそらく結果を文字列としてフォーマットしていますか?


OK、convert(..., 107)起こっているかわかりました。同等のものは次のとおりです。

select to_char(date '1970-01-01'
    + (to_number('1361439468476') / (1000*60*60*24)), 'Mon DD, YYYY') as dt
from dual;

DT
------------
Feb 21, 2013

...フォーマット モデルto_char()で使用します。Mon DD, YYYY

于 2013-02-22T10:34:14.137 に答える