質問です。
SQLでフィールドタイプをDATE型で指定した場合
7桁となるようなのですが、どのような形になるのでしょうか?
2002/02/21だと10桁になってしまいますし・・・
02/02/21ですと8桁になってしまいます。
よろしくお願い致します。

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

A 回答 (2件)

何のデータベースかわからないと答えられないですが、


SQL Serverだと、こんな感じです。

datetime 型の値は、Microsoft® SQL Server™ により、内部的に 2 つの 4 バイトの整数として格納されます。最初の 4 バイトは "基準日"、つまり 1900 年 1 月 1 日からの日数、またはこの日までの日数を格納します。基準日は、システムが参照する日です。datetime 値は 1753 年 1 月 1 日より前の日付には使用できません。残りの 4 バイトは、午前 0 時から数えたミリ秒の数として表された時間を格納します。

smalldatetime 型は、日付および時間を datetime よりも低い精度で格納します。SQL Server は、smalldatetime 値を 2 つの 2 バイトの整数として格納します。最初の 2 バイトは、1900 年 1 月 1 日からの日数を格納します。残りの 2 バイトは、午前 0 時からの分数を格納します。日付の範囲は 1900 年 1 月 1 日から 2079 年 6 月 6 日までで、分単位までの精度です。
    • good
    • 0
この回答へのお礼

ありがとうございました。丁寧な説明でよく理解することができました。

お礼日時:2002/02/21 21:36

ORACLEだとDATE型は7バイト固定長になりますね。


日付のフォーマットですが、規定のフォーマットはCREATE DATABASE時に指定したNLS_LANGUAGEで定義されます。
ですから、どんな定義でも対応できるように7バイトで取っているというのが正しいです。(どのような定義方法でも0.1秒まで管理されます)
例としてNLS_LANGUAGEがJapanese_Japan.JA16SJISの場合は
'YYYY/MM/DD HH:MI:SS' です。
(INSERT文ではto_dateを使用してます。)

ちなみにセッションごとの日付のフォーマットは、NLS_DATE_FORMATパラメータで制御します。
    • good
    • 0
この回答へのお礼

ありがとうございました。大変役に立ちました。

お礼日時:2002/02/21 21:35

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

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

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

このQ&Aを見た人が検索しているワード

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

QOracle SQL*Plus Dateタイプのinsertでエラー

date タイプを含むデータをinsert するとエラーが出ます。
たとえば、
CREATE TABLE plsql101_purchase (
product_name VARCHAR2(25),
product_price NUMBER(4,2),
purchase_date DATE
)
;
で表を作り、

INSERT INTO plsql101_purchase VALUES
('Product Name 1', 1, '5-NOV-00');
を実行すると、
”ORA-01858: 数値を指定する箇所に文字が指定されています”
というエラーが'5-NOV-00'の下に星マークが出て表示されます。

自分のマシンに大学から渡された生徒用のOracle8iをWindows2000にインストールして教本に載っていた上のような文を実行したところ、エラーが発生しました。大学のマシンでは、うまくいきました。

何か設定するんだと思いますが、その方法がまったく分かりません。どうしたらエラーをなくすことができるでしょうか?

date タイプを含むデータをinsert するとエラーが出ます。
たとえば、
CREATE TABLE plsql101_purchase (
product_name VARCHAR2(25),
product_price NUMBER(4,2),
purchase_date DATE
)
;
で表を作り、

INSERT INTO plsql101_purchase VALUES
('Product Name 1', 1, '5-NOV-00');
を実行すると、
”ORA-01858: 数値を指定する箇所に文字が指定されています”
というエラーが'5-NOV-00'の下に星マークが出て表示されます。

自分のマシンに大学から渡された生徒用のO...続きを読む

Aベストアンサー

Fireworksさん こんちは

ご自宅のORACLEの NLS_DATE_FORMAT はどうなっていますか?
初期化パラメタに設定されているはずですので確認してみてください。
'5-NOV-00'での形式での日付データを挿入できないのであれば、なにか別の形式になっている可能性があります。

「初期化ファイルの修正後ORACLE再起動」か、
SQL*Plusより、
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY';
で変更できると思います。

QFileMakerで6桁の数字を1桁づつ各フィールドにいれたい!

FileMakerで6桁の数字を1桁づつ各フィールドに移したいのですが。

564297 が合計フィールドに入っているとします。

それを

100000の位フィールドに5
10000の位フィールドに6
1000の位フィールドに4
100の位フィールドに2
10の位フィールドに9
1の位フィールドに7

と各フィールドに数字を分けたいのですが
どうしたらいいでしょうか?
もちろん位別にわけたいです。
質問がわかりにくくてごめんなさい。

Aベストアンサー

ANo.1、3です。
たびたび訂正
  T = GetAsText(金額);L = Length(T)];

  T = GetAsText(int(金額));L = Length(T)];
でお願いします。

ANo2の方の方法ははシンプルでいいですね!

でもそれだけだと小額でも0が表示されますが
それはいいのかな?
まあif分岐を追加すればいいだけですが

Qクエリのフィールドに 式1:DateAdd("d",-2,Date()

クエリのフィールドに 式1:DateAdd("d",-2,Date()) と入力し、実行すると、2日前の日付ではなく、2年前の同じ日付となってしまいます。何が原因か分からず困惑しています。ご教授よろしくお願いいたします。

Aベストアンサー

http://groups.google.az/group/microsoft.public.jp.access/browse_thread/thread/7512043f698bb493
行き詰まったのでGoogle。
上記ではレスがつかなくてOSの再インストールまでしたそうです。
(クリックしても飛ばないかもしれませんのでその際はアドレスをコピペ)
どうも似たような症状。

初心に立ち返って、思いつくままに。
・メニューのヘルプから『アプリケーションの自動修復』
・新規データベースでも発生するか
・ADOのバージョンが古いので、2.5まで上げてみる。Microsoft ActiveX Data Object 2.5 Library
2.1のチェックは外して、プルダウンメニューの中央辺りに2.5があります。
最新は多分、2.8以降になっているかと思います。
・メニューから(VBEでは無い方)『ツール』→『オプション』→『全般タブ』
新規データベースの並び順が、日本語 UniCode であれば、日本語に変更。
これで新たに作ってみて試す。
これで駄目なら私は降参です。

※Microsoft DAO 3.6 Objects Libraryのチェックは戻して置いてください。

http://groups.google.az/group/microsoft.public.jp.access/browse_thread/thread/7512043f698bb493
行き詰まったのでGoogle。
上記ではレスがつかなくてOSの再インストールまでしたそうです。
(クリックしても飛ばないかもしれませんのでその際はアドレスをコピペ)
どうも似たような症状。

初心に立ち返って、思いつくままに。
・メニューのヘルプから『アプリケーションの自動修復』
・新規データベースでも発生するか
・ADOのバージョンが古いので、2.5まで上げてみる。Microsoft ActiveX Data Object 2.5 ...続きを読む

QSQLとPL/SQLの違いなど

いま会社でPL/SQLのシステムを構築する話が持ち上がっているのですが
SQLとPL/SQLでどのような違いがあるのかがいまいち分かりません。
あと、PL/SQLの開発システムを導入しようとするときに
どのようなソフトを入れればよいのかも、よく分かっていない始末です。

単純な質問なのかもしれませんが、わかる方よろしくお願いします。

Aベストアンサー

>SQLとPL/SQLでどのような違いがあるのかがいまいち分かりません。

簡単に言いますとBASICに似た構文のプログラムをオラクル(DBMS)がSQLと同じレベルで処理してくれるものです。
他のデータベースで言うところのストアドプロシージャと同じですからロードはオラクル内に格納されオラクル内で実行されます。


>あと、PL/SQLの開発システムを導入しようとするときにどのようなソフトを入れればよいのかも、よく分かっていない始末です。

サーバにオラクルがインストールされていれば何もいらないと思います。
もちろん開発はテキストエディタになってしまいますが。

QPL/SQLでのSQL文法

こんにちは。教えてください。
PL/SQLを使うのが初めで戸惑っています。
まず、PROCEDUREで
===========================
BEGIN

SELECT NAME FROM TABLE1 WHERE NAME='tanaka';

END;
/
===========================
このように書いて実行させようとすると、「コンパイルエラー」
「INTO句はこのSELECT文に入ります」というエラーが出ます。
SQLの文法的には間違ってないと思うのですが、INTO句とはこれいかに??

ネットでPL/SQLで検索かけて調べたのですがあまりにも初歩すぎて
わかりませんでした。
PL/SQLやORACLEのメーリングリストでお勧めがありましたら教えてください。
よろしくお願いいたします。

Aベストアンサー

コーディング例です。

**************************************************
*非ループ処理の例
**************************************************
.CREATE OR REPLACE PROCEDURE JOB1
.IS
.
.  w_NAME1  CHAR(10);
.
.BEGIN
.
.  SELECT NAME1 INTO w_NAME1 FROM TABLE1
.  WHERE TBL1_KEY = 'tanaka';
.
.  UPDATE TABLE2 SET NAME2 = w_NAME1
.  WHERE TBL2_KEY =  'tanaka';
.
.  COMMIT;
.
.EXCEPTION
.  WHEN OTHERS THEN
.    ROLLBACK;
.END;
./
**************************************************
*ループ処理の例
**************************************************
.CREATE OR REPLACE PROCEDURE JOB2
.IS
.
.  w_TABLE1 TABLE1%ROWTYPE;
.
.  CURSOR  c_TABLE1 IS
.  SELECT  NAME1
.  FROM   TABLE1
.  ORDER BY NAME1;
.
.BEGIN
.
.  OPEN c_TABLE1;
.
.  LOOP

.    FETCH
.      c_TABLE1
.    INTO
.      w_TABLE1;
.    EXIT WHEN c_TABLE1%NOTFOUND;
.
.    UPDATE TABLE2 SET NAME2 = w_TABLE1.w_NAME1
.    WHERE TBL2_KEY = w_TABLE1.w_TBL1_KEY;
.
.  END LOOP;
.
.  CLOSE c_TABLE1;
.
.  COMMIT;
.
.EXCEPTION
.  WHEN OTHERS THEN
.    ROLLBACK;
.END;
./

先頭のピリオドは無視してください。どこかにミスがあったらごめんなさい。

コーディング例です。

**************************************************
*非ループ処理の例
**************************************************
.CREATE OR REPLACE PROCEDURE JOB1
.IS
.
.  w_NAME1  CHAR(10);
.
.BEGIN
.
.  SELECT NAME1 INTO w_NAME1 FROM TABLE1
.  WHERE TBL1_KEY = 'tanaka';
.
.  UPDATE TABLE2 SET NAME2 = w_NAME1
.  WHERE TBL2_KEY =  'tanaka';
.
.  COMMIT;
.
.EXCEPTION
.  WHEN OTHERS THEN
.    ROLLBAC...続きを読む


人気Q&Aランキング

おすすめ情報