質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

4回答

8705閲覧

データベースのdatetimeのサイズについて

annderber

総合スコア98

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2017/12/12 02:32

お世話になります。

データベースのデータ型にはdatetimeがあります。これに必要な記憶領域は8バイトになるかと思いますが、フォーマットは「yyyy/mm/dd hh:nn:ss」であることが多いと思います。単純に文字列で考えると、サイズが足りないと思うのですがどういう仕組みなのでしょうか。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

サイズが足りないと思うのですがどういう仕組みなのでしょうか。

文字列として格納されているわけではないからです。SQL Server の datetime 型の場合ですが:

"datetime データ型の値は、SQL Server 2005 データベース エンジンにより、内部的には 2 つの 4 バイトの整数として格納されます。最初の 4 バイトは基準日、つまり 1900 年 1 月 1 日からの日数、またはこの日までの日数を格納します。基準日とは、システムが参照する日付です。残りの 4 バイトは、午前 0 時から数えた 1/300 秒単位の数として表された時間を格納します。"

ということで、「yyyy/mm/dd hh:nn:ss」というような形式の文字列ではないのです。

投稿2017/12/12 03:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

annderber

2017/12/12 04:20

コメントありがとうございます。 とりあえず、文字列で確認しているわけではないと言うことは理解できました。 詳しく調べるとかなり奥が深そうですねw ありがとうございました。
guest

0

んーと、まぁざっくばらんに言うと、内部的には最低単位(yyyy/mm/dd hh:nn:ssの場合、秒)だけで表される整数ですね。

投稿2017/12/12 03:04

編集2017/12/12 03:05
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

annderber

2017/12/12 03:09

コメントありがとうございます。 yyyy/mm/dd hh:nn:ssのようなフォーマットでも内部的にはすべて整数なっているということですね。
退会済みユーザー

退会済みユーザー

2017/12/12 03:11

うーんと、一般的にはどうもそうじゃないみたいなので、忘れてください。
退会済みユーザー

退会済みユーザー

2017/12/12 03:17

誰か、低評価つけといてください。
退会済みユーザー

退会済みユーザー

2017/12/12 03:17

回答が意味不明なのですが。ざっくばらんではなくて、もっと丁寧に説明していただけませんか。
退会済みユーザー

退会済みユーザー

2017/12/12 03:18

なんで?
guest

0

すでに解決されていますが、色々なDBでの日時型についてまとまったページがありましたので紹介しておきます。
グレゴリオ暦?ユリウス暦? データベースによって異なる、日付時刻型が扱える範囲
意外とDB毎にバラバラだったり、1DB内の日時型でも複数もっていたり(datetimeとdatetime2型など)と奥深いです。

ちなみに0001/01/01 00:00:009999/12/31 24:00:00までの秒数単位で表すなら
ざっくり10000*12*31*24*60*60 = 321408000000 = 約5[byte]で収まりますね。

投稿2017/12/12 04:09

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

annderber

2017/12/12 04:21

コメントありがとうございます。 上記サイトを見るとかなり詳しく書いてあり、参考になります。 ただこれをちゃんと理解するには今の私には時間がかかりそうですw ありがとうございました。
guest

0

ベストアンサー

こんにちは。

  • Oracle Databaseの場合です。DATE型はdatetime型と同じです。

https://www.shift-the-oracle.com/element/data-type/data-type-inside.html

  • SQLServerの場合です。

http://keicode.com/db/mssql06.php

他にも"DB名 datetime 内部表現"などとググると出てくると思います。

投稿2017/12/12 02:58

hsk

総合スコア728

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

annderber

2017/12/12 03:08

コメントありがとうございます。 上記サイト参考になりました。 つまり、yyyy/mm/dd hh:nn:ssのようなフォーマットは入力、出力の際にデータベース上で変換されているということですね。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問