秒単位で測定された Duration を Decimal(18,0) から時間、分、秒にキャストする必要があります。
e.g.:
8192 Seconds => 2:16:32 (Hours:Minutes:Seconds)
次のように、秒がリテラル文字列である場合、これを実行できることがわかりました(here )。
SELECT CAST(INTERVAL '8192' SECOND AS INTERVAL HOUR TO SECOND)
しかし、私がしようとすると:
SELECT Event_Id
, CAST(INTERVAL Duration SECOND AS INTERVAL HOUR TO SECOND)
FROM EVENT_TABLE
WHERE <some conditions>
Event_Id と Duration は両方とも、テーブル EVENT_TABLE で Decimal(18,0) と宣言されています
Teradata は次のように訴えています。
[エラー 3707]構文エラーです。'INTERVAL' キーワードと整数 8 の間に文字列または Unicode 文字リテラルのようなものが必要です
ここで使用する正しい構文またはアプローチは何ですか?
解決策: BellevueBob の投稿に基づく
SELECT Event_Id
, CAST(
Duration SECOND * INTERVAL '0000:01' MINUTE TO SECOND /* 1 */
AS INTERVAL HOUR TO SECOND /* 2 */
)
FROM EVENT_TABLE
WHERE <some conditions>
説明:
- 秒単位の既知の期間に 1 秒の長さの間隔を掛けます
- 結果の秒間隔を時、分、秒の間隔に変換します。