質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Q&A

解決済

2回答

6375閲覧

"HHMI"形式の文字列を現在年月日+"HHMI"の日付型で変換して取得する方法

coko1

総合スコア276

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

0グッド

0クリップ

投稿2018/11/09 06:33

編集2018/11/09 07:58

oracle

1SELECT 2 test.edTime 3FROM 4 test 5 6//取得結果 71800 ←18:00として扱われる 8

上記のように"HHMM"形式の文字列で時間を取得した際に、その取得文字列を今日日付の日付型に合わせて取得したいのですがどのように変換をかければ可能でしょうか?
取得形式は'YYYY/MM/DD HH:MI'の形式になります。

↓以下追記↓

oracle

1 2SELECT 3 TO_DATE(TO_CHAR(SYSDATE,'YYYY/MM/DD ') || to_char(to_date(test.edTime, 'HH24:MI:SS'), 'HH24:MI:SS'),'YYYY/MM/DD HH24:MI:SS') 4FROM 5 test 6

上記のように長ったらしく書いてみたら意図する結果を得られたのですが、もっと省略して書くことはできないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

質問文のコードでは HH24:MI:SS 形式で格納されているようですが、HH24MI 形式で格納されている前提で以下のような感じですかね。
※バージョンの記載がないので、とりあえず手元にあった 11g でやってます。

時刻のみ変換の副作用を利用しています。
時刻のみ変換

NUMBERをTO_DATEすると不思議な動きになります。
NUMBERをTO_DATE

追記されたコードにあるようにデータベースのフィールドが HH24:MI:SS 形式なら先頭に日付とスペースを補って TO_DSINTERVAL しても良い気がします。
TO_DSINTERVALで

投稿2018/11/09 11:57

atata0319

総合スコア881

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問の内容がはっきりしないですが、結果は文字列で良ければ以下を参考に。

SQL

1CREATE TABLE TEST(EDTIME VARCHAR2(4)) ; 2INSERT INTO TEST(EDTIME) VALUES('1800') ; 3COMMIT ; 4SELECT 5 TO_CHAR(SYSDATE,'YYYY/MM/DD') || ' ' 6 || SUBSTR(TEST.EDTIME,1, 2) || ':' 7 || SUBSTR(TEST.EDTIME,3, 2) AS DATE1 8FROM TEST ;
DATE1 ------------------------- 2018/11/09 18:00

投稿2018/11/09 10:53

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問