1

キャッシュSQLで(ObjectScriptのZDATETIME()と同様に)どの関数を使用して、エポックタイムスタンプからUTCタイムスタンプまでの秒数に変換できますか?ドキュメントを調べたところ、オブジェクトスクリプトでこれを行うための情報しか見つかりませんでした... SQLで使用できる関数は何ですか?ありがとう!

4

2 に答える 2

2

私はあなたがこのようなものを探していると思います。

DECLARE @epoch INT
SET @epoch = 1348519792
SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, GETUTCDATE(), GETDATE()), DATEADD(s, @epoch, '19700101 00:00:00:000'))

SQLフィドル

于 2012-09-24T20:48:02.300 に答える
0

それを理解したので、すべて手動で変換する必要がありました。私は既存の関数を見つけるために永遠に費やしましたが、これが私がそれをした方法です:

select 
    TO_CHAR(substr(audit.stamp,1,5),'YYYY-MM-DD') AS Date,
    CASE LEN(CAST(substr(audit.stamp,7)/3600 AS INT))
    WHEN 2 THEN CAST(substr(audit.stamp,7)/3600 AS INT)
    ELSE '0' || CAST(substr(audit.stamp,7)/3600 AS INT)
    END || ':' ||
    CASE LEN(CAST((substr(audit.stamp,7)/60)#60 AS INT))
    WHEN 2 THEN CAST((substr(audit.stamp,7)/60)#60 AS INT)
    ELSE '0' || CAST((substr(audit.stamp,7)/60)#60 AS INT)
    END || ':' ||
    CASE LEN(CAST(substr(audit.stamp,7)#60 AS INT))
    WHEN 2 THEN CAST(substr(audit.stamp,7)#60 AS INT)
    ELSE '0' || CAST(substr(audit.stamp,7)#60 AS INT)
    END AS Time
from utility.audit

キャッシュSQLリファレンスマニュアルから引用:

CLOCKTIME    
  NEW
  SET Time=$PIECE($HOROLOG,",",2)
  SET Sec=Time#60
  SET Totmin=Time\60
  SET Min=Totmin#60
  SET Milhour=Totmin\60
  IF Milhour=12 { SET Hour=12,Meridian=" pm" }
  ELSEIF Milhour>12 { SET Hour=Milhour-12,Meridian=" pm" }
  ELSE { SET Hour=Milhour,Meridian=" am" }
  WRITE !,Hour,":",Min,":",Sec,Meridian
  QUITCLOCKTIME    
  NEW
  SET Time=$PIECE($HOROLOG,",",2)
  SET Sec=Time#60
  SET Totmin=Time\60
  SET Min=Totmin#60
  SET Milhour=Totmin\60
  IF Milhour=12 { SET Hour=12,Meridian=" pm" }
  ELSEIF Milhour>12 { SET Hour=Milhour-12,Meridian=" pm" }
  ELSE { SET Hour=Milhour,Meridian=" am" }
  WRITE !,Hour,":",Min,":",Sec,Meridian
  QUIT

ありがとう!

于 2012-09-26T20:40:03.837 に答える