![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.2ベストアンサー
- 回答日時:
#1 のmuyoshid です。
> 例えばですが、DATE型のカラムに「09/03/15 11:42」という値を・・・
Oracle はユリウス日 (紀元前4713年1月1日) からの経過日数+秒で日付データ
を管理しています。
紀元前4713年1月1日から2009年3月15日の経過日数は、2454906日です。
こでに、11:42 は (午前とすると) 経過秒は42120秒となります。
1日は、86400 秒なので0.4875 となり、2454906.4875 として格納されます。
Oracle がサポートしているのは、西暦9999年までなので、約540万 がDATE 型
データが内部で取り得る最大の値となります。
Date型データの詳細は、以下のマニュアル (SQL 言語リファレンス) を参照して下さい。
http://otndnld.oracle.co.jp/document/products/or …
因みにTIMESTAMP データ型も小数部の精度を上げているだけで内部の管理方法は
同じです。
No.3
- 回答日時:
基準日から何日たったかを実数で格納しています。
単位が日ですから、何時間何分何秒は小数になりますね。例えば、基準日を1990年1月1日0:00に取ります。
さて、1990年1月2日0:00はどうやって表現してあるかというと、基準日より1日ちょうどたってますから、1.0とデータベースには格納されます。1991年1月1日12:00だったら、366.5となります。基準日が何年だったか忘れましたが、こうやって格納しておけば、7バイトもあれば十分なわけです。ただし、欠点は、基準日からの日数を日付に直す計算をしないと表示できないわけですが、この計算のアルゴリズムは昔から知られたものが存在しますので、たいした欠点にはなりません(所詮、データベースを利用するプログラマやユーザーはまったく知る必要もないことでもあります。オラクルが全部自動でやってくれますから(笑))
一方利点は、日付の加減算をする時に、日付特有のもろもろの規則をまったく考慮しなくてすむことです。普通に足し算・引き算するだけで結果が出ますから。
アルゴリズムに関する詳しい資料の例として、参考URLを一つ書いておきます。グレゴリオ暦とかユリウス暦というキーワードで検索すれば、かなりの資料があります。
参考URL:http://www5d.biglobe.ne.jp/~noocyte/Programming/ …
No.1
- 回答日時:
こんにちわ。
> 日付と時刻はデータベースではどのように持っているのでしょうか?
内部的には、7Byte の数値型データで、整数部で基準日からの経過日数を、
小数部で00:00:00 からの秒数を管理しています。
ですので、sysdate + 1 (翌日) や、sysdate - 1/4 (6時間前) 等の演算を
行う事ができます。
この回答へのお礼
お礼日時:2009/03/15 22:20
さっそくのご回答ありがとうございます。
例えばですが、DATE型のカラムに「09/03/15 11:42」という値を入れるとします。
日付と時分まで考慮すると7Byteでは表現できないと思うのですが、どうやって値を保持するのでしょうか?
すみませんが教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- その他(パソコン・スマホ・電化製品) 腕時計の設定の仕方について 5 2022/08/21 13:40
- JavaScript gasについて 1 2022/05/31 21:51
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- 時計・電卓・電子辞書 ソーラー腕時計の自動時刻合わせが、いつもずれてしまう 7 2022/12/04 10:36
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Excel(エクセル) DATE関数で指定する「日」のセルが関数の場合の対処法 5 2022/09/14 15:46
- 弁護士・行政書士・司法書士・社会保険労務士 宅建等の法律関係の勉強法について 2 2022/06/23 01:10
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
SQLで部分的にGROUP BYしたいとき
-
yyyy/M/dをyyyy/MM/ddに変換
-
一秒ごとに更新をかける方法
-
DATE型の省略値について
-
日付型なら変数の先頭になん...
-
SQL ブレーク処理について
-
今日の日付が入った行のデータ...
-
エクセルでシートから日付を取...
-
エクセルのヘッダーを変数で指...
-
Oracle11gのDATE型
-
SQLite3のtext→date変換について
-
SQLサーバで和暦から西暦に変換...
-
SQLで部分的にGROUP BYしたいと...
-
Statement ignored というエラー
-
Access VBAで行ラベルが定義さ...
-
SQL*Plusの終了はquit?exit?
-
Accessのマクロでモジュールを...
-
VBA プロシージャの名前の取得
-
PL/SQLカーソルの2重FORループ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
今日の日付が入った行のデータ...
-
エクセルの日付に時差を加算 #V...
-
Accessの数値から時間に変換す...
-
エクセル 日付による並べ替え...
-
SQLサーバで和暦から西暦に変換...
-
SQLで部分的にGROUP BYしたいとき
-
重複するIDのデータを1行にま...
-
テーブルの主キーをdate型...
-
ExcelのSUMPRODUCTで日付の範囲...
-
WHERE句にて「30日前から今日ま...
-
yyyy/M/dをyyyy/MM/ddに変換
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
日付書式に変換でこまっています!
-
SQLite3のtext→date変換について
-
エクセルVBA 今日の日付行...
-
特定の日付が第何週目にあるか...
-
oracle 文字列 01:45 を時間に...
-
日付型なら変数の先頭になん...
-
Oracle10gのsql分についての質...
-
Excelグラフの日付軸の日付がず...
おすすめ情報