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

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

ただいまの
回答率

91.25%

  • データベース

    564questions

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

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

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 94

annderber

score 42

お世話になります。

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+2

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

文字列として格納されているわけではないからです。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 13:20

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

    キャンセル

checkベストアンサー

+1

こんにちは。

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/12 12:08

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

    キャンセル

+1

すでに解決されていますが、色々な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 13:21

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

    キャンセル

0

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/12 12:09

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

    キャンセル

  • 2017/12/12 12:11

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

    キャンセル

  • 2017/12/12 12:17

    誰か、低評価つけといてください。

    キャンセル

  • 2017/12/12 12:17

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

    キャンセル

  • 2017/12/12 12:18

    なんで?

    キャンセル

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

ただいまの回答率

91.25%

関連した質問

  • 解決済

    IOSの写真データのローカル保存について

    現在、写真やテキストを保存できる日記アプリをつくろうと考えています。 データ管理について調べた結果、AWSやさくらインターネットとMySQLを使用してサーバーにデータを保存し、p

  • 解決済

    C#でリテラル秒をDateTimeに変換したいです。

    いつもお世話になります。  C# Windows7 Formアプリケーション(.NET4.5)で、1450683424946のような数字(リテラル秒)をDateTimeに変換

  • 解決済

    C# Excelに日付を表示

    Excelの日付で1を入力すると1900/1/1と表示されるようなことを、 DB上でnullになっているものをC#のDateTime型の初期化で1900/1/1になるようにしたい

  • 解決済

    Python3で西暦の下2桁を出力する方法

    Pythonを学んでいる初心者です。 あるサイト(コードガールこれくしょん)の問題ですが、 回答に困っています。 どなたかお助けください! 問題:下のコードを修正して、今年

  • 解決済

    WEBページのバイト数を調べるには

    Html、JAVASCRIPT、PHPを使用して勤務する会社のWEBぺージを作成いたしました。 予算の都合上、フリー料金でレンタルできる50MB内にする必要があります。 確認するに

  • 受付中

    pythonのnow()について

    以下のようなpython形式のファイルで、5秒おきにMYSQLにデータを書き込んでいるのですが sql = u"insert into sensor values(now(), %

  • 解決済

    どのようにインスタンスを作成すればいいのか?

    2017年09月24日(日) ↑このような形式の日付を ↓このような形式に書き換える関数を作っています。(ネットでググりながら自己流です) 2017-09-24 そこで、エラ

  • 解決済

    datetimeモジュールの使い方について

    前提・実現したいこと 現在Pythonを使って現在日時を取得する処理を書いています。 やりたいこととしては、datetime関数で現在日時を取得し、その後時間部分を削ってフォー

同じタグがついた質問を見る

  • データベース

    564questions

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