[解決済み] Ruby on Railsで、DateTime、Timestamp、Time、Dateの違いは何ですか?
質問
私の経験では、プログラミングで日付や時刻を正しく表示することは、常に危険と困難を伴います。
RubyとRailsについては、選択肢が多すぎてどれを選べばいいのかわからないということもあり、いつも迷ってしまいます。
Railsを使っていて、ActiveRecordのデータ型を見ていると、次のようなものがあります。
datetime、:timestamp、:time、および:date。
で、何が違うのか、どこにゴチャゴチャが潜んでいるのか、さっぱりわからない。
何が違うの?何に使うの?
(追伸:Rails3を使っています)
どのように解決するのですか?
ActiveRecordの日付/時刻フォーマットの違いは、Railsにはほとんど関係なく、使用しているデータベースにすべて関係します。
MySQL を例にとると (もっとも一般的な理由でなければ)、次のようになります。
DATE
,
DATETIME
,
TIME
と
TIMESTAMP
カラムデータ型; ちょうど
CHAR
,
VARCHAR
,
FLOAT
と
INTEGER
.
では、何が違うのかって?まあ、自明なものもありますが。
DATE
は日付のみを格納します。
TIME
は時間帯だけを格納し
DATETIME
には両方が格納されます。
との違いは
DATETIME
と
TIMESTAMP
はちょっと微妙ですね。
DATETIME
は次のような書式になります。
YYYY-MM-DD HH:MM:SS
. 有効な範囲は1000年から9999年まで(とその間のすべて)です。ただし
TIMESTAMP
ルックス
データベースから取得したときは同じようなものですが、実際には
ユニックスタイムスタンプ
. その有効範囲は1970年から2038年までです。データベースエンジン内の様々な組み込み機能を除けば、ここでの違いはストレージスペースである。なぜなら
DATETIME
は、年、月、日、時、分、秒のすべての桁を格納するため、合計8バイトを使用します。そのため
TIMESTAMP
は1970-01-01からの秒数のみを格納するため、4バイトを使用します。
MySQLの時刻フォーマットの違いについては、以下をご参照ください。 ここで .
結局のところ、日付/時刻カラムに何をさせるか、ということに尽きます。
-
1970年以前の日付と時刻、または2038年以降の日付と時刻を格納する必要がありますか => を使用します。
DATETIME
. -
データベースのサイズを気にする必要があるか、そのタイマー範囲内か =>を使用します。
TIMESTAMP
. -
日付だけを保存する必要がありますか => を使用します。
DATE
. -
時間だけ保存すればいいのか => 使う
TIME
.
ここまで言っておいてなんですが
Railsは実際にこれらの決定のいくつかをあなたに代わって行います。
. どちらも
:timestamp
と
:datetime
はデフォルトで
DATETIME
一方
:date
と
:time
は
DATE
と
TIME
それぞれ
つまり、Rails内では、日付、時刻、またはその両方を保存する必要があるかどうかを決めるだけでよいのです。
関連
-
[解決済み】コレクションをDESCで並べる方法
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] time(1) の出力における 'real', 'user' および 'sys' はどのような意味ですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] Androidで現在の時刻と日付を取得する方法
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] UnixのタイムスタンプをDateTimeに、またはその逆に変換するにはどうすればよいですか?
-
[解決済み] 2つのJava日付インスタンスの差分を計算する
-
[解決済み] Unix タイムスタンプ (エポックからの秒数) を Ruby の DateTime に変換する方法は?
-
[解決済み】RubyのDateTimeとTimeの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: SymbolからIntegerへの暗黙の変換がない。
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] Oauth2 Instagram API "リダイレクトURIが登録されたリダイレクトURIと一致しない"
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] railsでhidden fieldタグを使用する方法
-
[解決済み] Ruby:Rubyの配列にinclude.の反対はある?
-
[解決済み] Rails / Haml: 投稿フォームを作成するには?
-
[解決済み] Railsのカラムタイプに関するドキュメントはありますか?