2016-05-04 4 views
0

データベースに日付と時刻をどのように保存すればよいのでしょうか? 1つのDATETIME列にそれらを一緒に格納すると、レコードごとに8バイトが必要となり、DATEとTIMEの2つの列に別々のデータを格納すると、レコードごとに合計で6バイトとなります。中小規模のデータベースではそれほど多くはないが、誰かが政治的に正解したいと思っても害はない。それは正しいですか? :)または、datetimeを2つの列に分割する前に考慮すべき点は何ですか?MySQLのデータ型 - DATE型とTIME型を格納すると、DATETIMEエントリに対応するレコードごとに2バイトが別に保存されますか?

Storage Requirements for Date and Time Types

繰り返しますが、私は唯一の4つのバイトがかかりますが、TIMESTAMPデータ型は、1970年1月1日00分の範囲を持っていることを知っているので、私はおそらくTIMESTAMPのために行くだろう、上記の表を見たとき: 00:01 'UTC to' 2038-01-19 03:14:07 'UTC私はあまりよく分かりません。それは長期的には良いアイデアですか?私はそれほど古いわけではないので、私はまだ2038年にそこにいるだろうし、2038年1月19日03:14:0 'で何が起こるのか疑問に思う。...私はDATEとTIMEデータとにかく型の列? :)

+1

これはちょっとした部屋を節約するかもしれませんが、2Mバイトの記憶容量の2MBよりもはるかに時間がかかります。 (例: "昨日の正午"と "正午の今日"の間にレコードを見つけるために必要な条件を考えて、フィールド値の関数を使用すると、それらのフィールドにある可能性のあるインデックスの利点がなくなります。テーブル内のすべての行について、これらのフィールドの操作を実行することで速度を落としてください)。 – Uueerdo

+0

あなたはそれについて恥知らずです。私は日付を比較するためにいくつかの洗練されたクエリを作成する必要があります。 TIMESTAMPはどうですか?それはDATETIMEの代わりに考えていますか? (少なくとも2038まで:) – DevWL

+0

TIMESTAMPは実際にあなたの使い方に依存します。あなたが46歳未満の人のみに限定されていない限り、明らかに出生/建設/創業/その他の日程では非常に信頼できるものではないでしょう。私は、タイプ間に若干の行動上の違いがあると信じています。それはタイムゾーンと有効なデフォルト値(MySQLのバージョンに依存します)になります。私はあなたの日付フィールドのサイズについての心配は、あなたの最高のケースの節約額が4Mバイトのフィールドである場合に考慮すべき最後のものの1つであると考えています。 – Uueerdo

答えて

0

テーブルについて。私はMySQLのためだと思う。この表は5.6.4以降のバージョンで更新されます: Date/Time and Date time storage comparisons for MySQLdatetimeという名前で保存する方が便利な場所です。

日= 3バイト
時間= 3バイト
タイムスタンプ= 5バイトここ

あなたはPostgresSQLのためのテーブルを見ることができます:あなたはtimestampとして保存する多くのバイトを保存Date/Time and Date time storage comparisons for Postgres 。あなたにも、SQL Serverの比較を見つけることができますこのリンクを= 8バイト

日= 4バイトは
時間= 8バイト
タイムスタンプ:Date/Time and Datetime comparisons for SQL Serverそれはほぼ同じです。

日= 4バイト
時間= 3
5bytesにタイムスタンプ=私はあなたの質問にyesと答えるでしょう

を8バイト。それを実装する上で私の2つのセントは、データをどのようにクエリするかによって異なります。

関連する問題