• ベストアンサー

DATE型を変換して表示したい。

以下のようなカラムをもつテーブルがあるとして、 ID, DATE 0001, 2006-12-07 00:00:00 00011, 2006-12-07 11:11:11 IDとDATEを整形して、次のような値をSELECT文で表示したいのですが、どのように指定すればよいでしょうか。 2006120700000000001 2006120711111100011 DATEは、-、スペース、:を削除し、IDは5桁として連結する。IDが4桁であれば先頭に0詰めする。

  • Oracle
  • 回答数4
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

select to_char(DATE,'YYYYMMDDHH24MISS') || to_char(ID,'00000') from テーブル名; でできないでしょうか。今手元にOracleの環境がないので試していませんが。

tomoremo
質問者

補足

さっそくの回答ありがとうございます。 試したところ、以下のように表示されています。 20061207000000 00001 20061207111111 00011 できれば、DATEとIDにスペースを空けたくないのですが。。。

その他の回答 (3)

  • D_Mari
  • ベストアンサー率0% (0/2)
回答No.4

trimしなくても、to_char(ID,'fm00000')でOK。

  • FudaKeji
  • ベストアンサー率73% (58/79)
回答No.3

TO_CHARでフォーマットを指定すると先頭に半角空白が入ってしまいます。 なので、 SELECT TO_CHAR(DATE,'YYYYMMDDHH24MISS') || TRIM(TO_CHAR(ID, '00000')) FROM テーブル とすれば良いでしょう。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

No.1です。||で連結したときに空白が挿入されたかなあ。 うろ覚えで申し訳ないです。下のようにしたらどうなりますか? select concat(to_char(DATE,'YYYYMMDDHH24MISS'),to_char(ID,'00000')) from テーブル名;

関連するQ&A

  • SQL文。特定の月間の値のみを表示したい

    Access VBAを利用しています。フォームにテキストボックスを置いてユーザーに日付を入力してもらおうとしています。Accessのテーブル、Table1のDateフィールドには日付が入っています。2009/10/01みたいに8桁で入っています。 やりたいことは、フォームのテキストボックスに日付を2009/10みたいに入力してもらいます。実行ボタンを押すと、そうすると2009/10/1から2009/10/31までの10月の値のみをselect文でひっぱってきたいと思っています。ここで指定の日付のみをひっぱってくるselect文が思いつきません。2009/10/1のみの値を引っ張ってくるselect文はわかるのですが、10月の間、11月の間など月指定の場合、どうやって引っ張ってくるのかご教授お願いいたします。

  • MySQL区切った文字列で外部結合はできない?

    MySQLの外部結合について教えてください 「結合の対象となっているカラムの値が一致」は必須なのでしょうか? ■やりたいこと ・Aテーブルaカラム内にある「デリミタの先頭文字列」を抽出して、Bテーブルのidカラムと結合したい ■最終的にやりたいこと ・上記一致条件で、両テーブルデータをSELECTしたい ■試したこと ・「SELECT SUBSTRING_INDEX」で「デリミタの先頭文字列」を抽出できたのですが、そこで行き詰まりました ■質問 ・そもそもやろうとしていることが無謀なのでしょうか? ・テーブル構成を見直した方が良いのでしょうか?

    • ベストアンサー
    • MySQL
  • UPDATE文の副問い合わせ

    こんばんわ。 今少し書き方がわからないSQL文があって困っています。 テーブルA(データが入ってるテーブル)に 新規でカラムを追加したので、 今UPDATE文を使いたいと思っています。 膨大なので、1つ1つする訳にはいかないので、 条件指定して、あるカラムにあるとある条件に合致するものは 新規カラムの値が4とか ある条件なら、新規カラムの値が6などと入れたい感じです。 自分なりに調べて UPDATE テーブル名 SET 新規カラム = 値 WHERE (SELECT * FROM 同じテーブル名 WHERE 条件) だと思って色々書いたり試行錯誤したのですが、 全然できませn。 どのように書けばよろしいのでしょうか? またUPDATEをかける際の条件指定に2つの違った 条件(同じカラムの違う条件、または別カラムの条件) を入れることは可能でしょうか? 回答いただけるとありがたいです。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 同テーブルで指定カラム値を相互更新(入替)したい

    下記のようなカラムがある時、DBから取得した値を、引数(並べ替え順)に応じて、(同じカラムを)更新するSQL文を教えてください ●カラム id1 sex1 age1 id2 sex2 age2 id3 sex3 age3 id4 sex4 age4  ●引数例 3 1 2 ※1番目が3、2番目が1、3番目が2 ・「1の数字が付いたカラムの値」を、「3の数字が付いたカラムの値」で更新したい ・「2の数字が付いたカラムの値」を、「1の数字が付いたカラムの値」で更新したい ●質問 ・MySQLだけで処理可能でしょうか? UPDATE テーブル名 SET id1=(SELECT id3 FROM テーブル名 WHERE id1=id3値),sex2=(SELECT sex3 ……; ・それとも、一度、全ての値を取得して、PHP等で処理するのでしょうか? UPDATE テーブル名 SET id1=id3値,sex1=sex3値,age1=age3値,id2=id1値 ……; ・他に何か良い方法はあるでしょうか(一旦別テーブル作成後、戻す等) ●環境 MySQL5.1

    • ベストアンサー
    • MySQL
  • date型のselect について

    質問させてください。 今、テーブル(test_tbl)にフィールドjikan(date型)があるとします。 jikanフィールドの値を取得したいのですが、 select to_date(jikan, 'YYYY/MM/DD HH24:MI:SS') from test_tbl; と実行すると、 01-11-10 01-11-11 01-11-12 01-11-13 01-11-14 01-11-15 01-11-16 となってしまいます。 質問店としては、 なぜ、フォーマットを指定しているにもかかわらず、 (1) 年が4桁表示ではなく、2桁表示なのか? (2) 時間部分は表示しない、もしくはデータがない? の2点をお教えください。 ご迷惑をお掛けしますが、宜しくお願い致します。

  • ORA-01438について

    OracleのPL/SQLの作成で "ORA-01438: 指定した精度を超えた値が列に指定されています"の エラーメッセージが出てしまいます。 PL/SQL上で、値が整数2桁+少数2桁 となるところを計算式を修正し 整数4桁になるようにしたところ、ORA-01438が出るようになりました。 ちなみに全てselectのはずです。 該当のカラムは副問い合わせを介してテーブルから呼んでいるのですが、 大本のカラムには精度(桁数)指定はありません。 いったいこれは何の精度指定に引っ掛かっているのでしょうか。 考えられる可能性を提示して頂けると大変助かります。

  • MySQL VIEW連結時の設定

    テーブル名 : table1 カラム1 : id(int) カラム2 : table2_id(int) テーブル名 : table2 カラム1 : id(int) カラム2 : time(int) ← phptaimestamp この二つをviewとして連結したいです。 table1.table2_id と table2.id をキーにするとして、問題はtable2.dateの中身がphpのtimestampで格納されている事です。 VIEW上で連結した際に、このtable2.dateのphpで吐いたtaimestampを通常の20131015の様な変換を加えたいのですが、MySQLの中で完結する方法はあるのでしょうか? 長文で申し訳ありませんが、アドバイス宜しくお願いします。

    • ベストアンサー
    • MySQL
  • SQlを使用して指定レコードの削除を行いたい

    SQL構文を使用して、テーブル内の指定のデータを削除したいと思っています (oracle11gです) 条件抽出テーブル:PRM_A 抽出条件1の対象カラム:NO_1(6ケタで年月が入っている) 抽出条件2の対象カラム:NO_2(0か1が入っている) 抽出内容:NO_1の年月のうち、最小の値かつ、NO_2の値が0である →抽出結果として、6けたの年月が出力される 削除対象テーブル:DEL_TBL_A 削除条件用カラム1:DEL_COL_1 削除条件用カラム2:DEL_COL_2 削除条件:DEL_COL_1が「抽出結果」の1~4桁目(4桁の数値)と一致し、 DEL_COL_2が「抽出結果」の5~6桁目(2桁の数値)と一致する 以上の処理を行おうとして、まずは前半部分(抽出結果の抜き出しまで)を行いました。 select min(NO_1) from PRM_A where NO_2=0 上記で、想定できる結果の出力ができました。 その次に、削除条件を作成しようとしたのですが、下記の記載で実施したところ、 Error [row:3,col:130] ORA-00936: 式がありません。 と出力されました。 select substr((select min(NO_1) from PRM_A ),1,4) from PRM_A where NO_2=0 and (select min(NO_1) from PRM_A) ; 申し訳ございませんが、理由と正しいSQL文がお分かりになられる方がおりましたら、ご教授願えませんでしょうか

  • 重複データを表示しない

    はじめまして。質問させて頂きます。 この教えてGoo!のような質問掲示板を、下記のようなカラムにて作っているのですが、例えば、登録ユーザーさんのがこれまでどのような回答をしたか?を閲覧出来るページを作る場合、普通にselectしただけでは、同じ質問に2度回答してあるときなどは、複数表示されてしまいますが、これを避けるためにはどのようなSQL文にしたら宜しいのでしょうか? SQLを触り始めて間もないこともあり、調べようにも適切なキーワードが思いつかず、なかなか目的の情報にたどり着かないため投函させていただきました。宜しくお願い致します。。 help(質問テーブル) no id subject contents date answer(回答テーブル) no help_no id answer date ※help_noは、質問テーブルのnoと紐づけるためのカラムです。

    • ベストアンサー
    • MySQL
  • SELECT文で指定桁数分抽出する方法?

    SQL初心者ではじめて質問させていただきます。 SELECT文でテーブルの1つのカラムから上3桁と下2桁を抽出し、別なテーブルのカラムの上5桁をWhere句に条件を入れて検索はできますか? どなかたお分かりでしたら教えてください。 よろしくお願いします。