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)
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