オラクルのDATE型について教えて下さい。

以前の質問にも同じような質問があったのですが、内容を少し違うようなので
質問させていただきます。

オラクルの8.1.6のデータベースにおいて "A" テーブルの中の "B" 項目をdate型にしました.

AテーブルのB項目のデータが現在は "YY/MM/DD"形式で格納されていますが、それを
"YYYY/MM/DD"形式で格納したいのですが、どのようにすれば良いでしょうか?

やはり、テーブルを再度作りなおさないと行けないのでしょうか?

ちなみに開発環境はOracle8.1.6 オブジェクトブラウザ-を使用しています。
宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Oracle の DATE型 は "YY/MM/DD"形式で格納されているわけではありません。


Oracle独自の形式(非公開)で 7bytes の情報として格納されています。
その 7bytes の中に「年月日時分秒」の情報が入っています。

なので、データを取得する際に、to_char 関数を用いて
好みの形式にして取り出して利用する、というのが DATE型の使い方になります。

select 文で、to_char 関数を使用せずに取得した場合の形式は
NLS初期化パラメータ NLS_TERRITORY(が定義する NLS_DATE_FORMAT)で
指定されます。
    • good
    • 0

date型のフォーマットというのは、取り出すときや格納するときに使うものであって、格納の型はあくまでdate型です。



前回もdate型であれば、結論はテーブルは作り直さなくていいです。
同じB項目を取り出す際に"YY-MM-DD"で取り出そうが、"YYYY/MM/DD HH:MI:SS"で取り出そうが同じです。

このフォーマットはdate型をどう編集して取り出すかの指定だけです。

参考URL:http://www.sqlpowerpage.co.jp/Sql/DataAttribute. …
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Qオラクルテーブルで受け付けない文字

ACCESS97のデータベースで オラクルのテーブルを使用しています。
アクセスのテーブルではクエリーが実行できたのですが
(実行時に読込めた)
名前を変更して、(リンクしている)オラクルテーブルで実施すると
上手く行きません。
オラクルテーブルでは、受けつけない文字があると聞いたことがあります。
例えば、 " や ' など。
このような文字 一覧がわかるページ等 ないでしょうか? 

Aベストアンサー

こんにちわ。

この件については、「Oracle8i SQL リファレンス」第2章
「Oracle SQLの基本要素」に、「スキーマオブジェクトのネーミング規則」
と言う項目に記載されています。
詳細はマニュアルにて確認して下さい。

ユーザ登録 (無料) が必要ですが、OTN Japan にPDF 形式のマニュアルが
公開されていますので、必要であればこちらからDownload されては
いかがでしょうか?

参考URL:http://technet.oracle.co.jp/

Qオラクルのテーブルについて

質問があります。
SQL文で指定したテーブル(test_tbl)のCREATEされた
日時とかわかるようなものはないでしょうか?

たとえばテーブル
(table_a, table_b, teble_c:全て同じ構成だが格納データが異なる)が
あって一番最後に作成されたテーブルに
アクセスしたい場合なんですが
どのようなSQL文になるでしょうか?
またそんな事はSQLではかけないような場合、
どのようにすればテーブルのクリエート日付を取得
することができるでしょうか?
宜しくお願いいたします。

Aベストアンサー

こんにちは。

作成された表(などのオブジェクト)に関するデータは、
***_OBJECTS に格納されています。

テーブルを作成したユーザ自身で確認するならば
USER_OBJECTS を検索すればOKです。

CREATED ・・・作成日
LAST_DDL_TIME ・・・データ更新日

となっています。

後は、表だけを表示したいならば、対象を
表に限定すれば良いです。
select * from USER_OBJECTS where OBJECT_TYPE='TABLE';

ご確認ください。

Qオラクルのテーブルでの入力制限

こんにちは。教えてください。
小職はオラクルデータベースを使って銀行振り込みファームバンキングをする
プログラムを作成しています。
出力項目の振り込み名義人名カナは小文字のみ指定です。
そこでオラクルのテーブルに小文字しか入力できない制限を指定したいのですが
ご存じの方は教えてください。

オラクル側で入力制限を行うのが一番堅いと思います。
よろしくお願いします。
(^^

Aベストアンサー

補足ありがとうございます。

全角半角チェックは、TO_SINGLE_BYTE関数でチェックできると思います。
アルファベットの大文字小文字はLOWER関数でチェックできると思います。

この2つの関数でCHECK制約をつければできると思います。ただ心配なのは、全角ひらがなと漢字のチェックができるかどうか・・・

Qテーブルの主キーをdate型にする

DBのテーブル設計で主キーを日付にしたい場合、
日付型を使用せずに数値or文字列で設定する場合がほとんどなのですが、
その理由が「なんとなく安定性がありそうだから」
というくらいでしかありません。

もしかしたら過去に「~~という理由だから」と教えられているかもしれませんが、
それもいまいち思い出せず・・・^^;


今すぐどうこうしたいという内容ではなく、
ちょっとした疑問ですが、
もしご存じでしたらご教授お願いします。

Aベストアンサー

個人的には date 型でも特に問題ないのではないか、と思っていま
すが、どうでしょうか。
(そもそも主キーに日付、というのパターンをあまりみたことが
 ないのでよくわかりません)
時刻まで含めたいのか、時刻は不要なのかによっても変わってき
ますが、ここは時刻はいらいない、として考えてみます。

また、使用するRDBMSによっても変わってくるはずです。
たとえばOracleの場合を比較してみると、
http://biz.rivus.jp/data_type_inside.html
(1)サイズ
  DATE型・・・7バイト
  NUMBER型・・6バイト
  CHAR型・・・8バイト
  NUMBER型がいいですが、どんぐりの背比べです。
(2)検索スピード
  =を指定したときの検索スピードは、当然インデックスが使
  われますから、どれにしても問題ないぐらい高速で、どれで
  もいいでしょう。それ以外の検索は要件に応じて、どれが早い、
  とはいちがいにはいえないと思います。可変長項目をプライマリ
  キーにすると検索が遅い、というのはきいたことがありますが、
  この場合は全部固定長ですね。


結論としては、検索の用途に応じて、実際にやりたい検索でスピード
をためしてみて決める、というところでしょうか。
RDBMSによって内部形式もちがいますし、一般的にどう、とは
いえないと思います。やりたい検索が決められなければ、DATE
関連に特化した関数がいろいろ使える(このへんもRDBMSに
よってちがいますが)、DATE型が無難かと思います。

個人的には date 型でも特に問題ないのではないか、と思っていま
すが、どうでしょうか。
(そもそも主キーに日付、というのパターンをあまりみたことが
 ないのでよくわかりません)
時刻まで含めたいのか、時刻は不要なのかによっても変わってき
ますが、ここは時刻はいらいない、として考えてみます。

また、使用するRDBMSによっても変わってくるはずです。
たとえばOracleの場合を比較してみると、
http://biz.rivus.jp/data_type_inside.html
(1)サイズ
  DATE型・・・7バイト
  ...続きを読む

QオラクルのLONG RAW型のテーブルの操作方法と容量計算の仕方

オラクル8.1.6で、LONG RAW型のカラムがあるテーブルへのインサート、アップデートの方法を教えてください。
Pro*Cで作成したツールはあるのですが、自分が少し扱えるPL/SQLでツールを持ちたいのです。BLOB型などはパッケージを使うということまではわかったのですが、LONG RAW型については、サイト検索しても見当たらないように思います。
また、テーブルの容量計算も通常のVARCHAR型やNUMBER方とは違うようです。VARCHAR型と同様の方法で計算してみたのですが、実際にPro*Cでテストデータをロードしてみたところ、見積もり以上のの容量を消費するようです。
よろしくお願いします。

Aベストアンサー

こんにちわ。

> utl_raw.lengthファンクションを試してみましたが、LONG RAW型には
> 対応していないみたいです。エラーではねられました。
についてですが、utl_raw パッケージでlong raw 型を操作する事は
可能です。
但し PL/SQL では、long/long raw 型のデータ型が扱えるデータ長が
32760 バイトに制限されている事が原因だと思われます。
恐らく、long raw の項目に格納したデータが長すぎたのだと思います。
→ この件は、「PL/SQL ユーザーズガイドおよびリファレンス」の
  「第2章 基礎」のLONG とLONG RAW に記載されています。

32761 バイト以上のlong/long raw のデータ長をPL/SQL から調べるには、
DBMS_SQL.DEFINE_COLUMN_LONG で、Long raw 列をVarchar2 変数に対応
付けて、DBMS_SQL.COLUMN_VALUE_LONG で データを分割して取り出して、
その際の長さを合計するしかないようです。
どっちみち、PL/SQL でlong/long raw を操作するのは面倒そうですね。

こんにちわ。

> utl_raw.lengthファンクションを試してみましたが、LONG RAW型には
> 対応していないみたいです。エラーではねられました。
についてですが、utl_raw パッケージでlong raw 型を操作する事は
可能です。
但し PL/SQL では、long/long raw 型のデータ型が扱えるデータ長が
32760 バイトに制限されている事が原因だと思われます。
恐らく、long raw の項目に格納したデータが長すぎたのだと思います。
→ この件は、「PL/SQL ユーザーズガイドおよびリファレンス」の
  「第2章 基礎」...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報