質問です。
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と関連する良く見られている質問

Qc型肝炎はHしたらうつるのでしょうか?

今c型肝炎がテレビのニュースとかに出てるのですけど血液感染以外にエイズみたいにHしたら相手にうつるのでしょうか?
まったく知識がないので教えていただけませんか?
 

Aベストアンサー

C型肝炎が性行為で感染する確率は低いとされています。
しかし、血液感染するものですから、コンドームの使用をお勧めします。
性交渉の際、目には見えないような細かな傷が多数できるのです。そういった傷からの血液感染という可能性を否定することができませんから。
以上kawakawaでした

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';
で変更できると思います。

QB型肝炎のキャリアです。うつる??

19歳、遺伝性のB型肝炎のキャリアです。Hするときは相手の方にうつりますか??付き合って2ヶ月の彼氏がいて、きっとバレンタインに初Hすると思います。処女なので、出血するかもなんですが、その血で感染。。。なんてことはないですか?コンドームは絶対に使うつもりですが、心配です・・・。

Aベストアンサー

同じくキャリアです
Hしましたが、
ナニも起こりませんでした
相手の体の都合にもよるのでは?
感染の可能性はありますが、抗体を持つことが出来る
体質であれば何も問題は起きないものです
でも一応相手の了解は取ったほうがいいかと・・・

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分岐を追加すればいいだけですが

QC型肝炎は尿でもうつるの?

身内にC型肝炎の患者がいるのですが、
便座についていたその患者の尿に気づかず
その上に座ってしまいました。血液で感染することは
知っているのですが、尿でも感染するのかと
気になっています。どうか、教えてください。

Aベストアンサー

気になるのなら調べましょうよ
C型は基本的に血液感染です むかーーーしは輸血とかってのが多かったですけどね こっちに関しては今は無いです
今あるのは麻薬とかの針の使いまわしですかね。
性行為感染とか母子感染とかもなくは無いですがほぼないと思ってください。

つまりその尿が血尿とかで今すぐでた物であり あなたの体内に入り直接粘膜に触れなければ感染しません。
便座についていた程度であれば感染確率は0です

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 ...続きを読む

QB,C型肝炎が歯科治療でうつる可能性は?

 上記の通りです。
ポイントは、歯医者での口腔処置の場合、一人一人使い捨てでない機器があると思うのですが、処置時に出血もありますのでB,C型肝炎の感染の可能性があるのではないかと思うのですがいかがでしょう?

Aベストアンサー

使い捨てでない機材であっても、リンク先のような消毒を行えば
ウイルスは除去されるようです。

しかしながら、消毒をされていない機器であれば、感染の可能性はあるということになります。
消毒していない機器を使っているような歯科があったとしたら、
ウイルスを撒き散らしているようなものです。

歯科の機器や理髪店のかみそりなど消毒が十分であると祈っています。

参考URL:http://www.mhlw.go.jp/bunya/kenkou/kekkaku-kansenshou09/02-10.html

QSQLとPL/SQLの違いなど

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

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

Aベストアンサー

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

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


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

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

Qキスでうつるものは

ある風俗嬢のブログにこう書かれていました。
¨キス感染¨
A型肝炎、B型肝炎、C型肝炎。
咽頭クラミジア、咽頭淋病。
HIVウィルス感染=エイズ。

キスでうつります。
キスで簡単にうつる。

あ、、歯周病も歯肉炎もね!!

みんなにありえる可能性。
SEXよりも身近な可能性。
キス感染。


とありましたが、この中で本当にキスで感染する可能性のあるもの

そしてそれに感染した場合に完全に直る病気なのか
完治は難しいのかを教えてください。

Aベストアンサー

咽頭クラミジア、咽頭淋病、口腔ヘルペスは移ります
歯周病は歯周病菌を持っていない人(赤ちゃんなどです。風俗に行く方で歯周病菌を持っていない、という方がいるとは思えませんが…)なら移ります

ヘルペスなど痒痛いブツブツができてかなり辛いです
確かに防ぎようがないという点でHIVより身近でキケンといえますね

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ランキング