我有一列,我只想存儲時間(小時,分鐘,秒)。例如這裏是一個移民:2000-01-01 01:19:00 +0700
:Rails:爲什麼時間數據類型在1/1/2000開始
add_column :products, :start_hour, :time
當我插入到數據庫start_hour
總是1/1/2000
例如啓動。請爲我解釋爲什麼。
我有一列,我只想存儲時間(小時,分鐘,秒)。例如這裏是一個移民:2000-01-01 01:19:00 +0700
:Rails:爲什麼時間數據類型在1/1/2000開始
add_column :products, :start_hour, :time
當我插入到數據庫start_hour
總是1/1/2000
例如啓動。請爲我解釋爲什麼。
Ruby中沒有時間類或Rails所以ActiveRecord代表time
列與日期時間/時間戳記類。
如果您查看數據庫內部沒有任何ActiveRecord,Rails或Ruby噪聲,您將看到HH:MM:SS
時間值。但是,當ActiveRecord將time
拉出數據庫時,它將日期組件設置爲2000-01-01,因爲日期時間必須有日期並且AR選擇該日期。
任何時候在Ruby中使用start_hour
時,都必須忽略日期組件。
存儲在數據庫中的格式之間的差別與Rails無關,與您的數據庫有關的所有內容都無關。日期或時間格式在您的應用程序中僅「有效」,而不在數據庫中 - 更簡單地說,它們只負責將時間對象顯示給用戶,並且不會影響數據存儲方式。您最好的選擇是將記錄保存爲時間對象,然後使用Rails助手以strptime
等方法以有意義的方式向用戶展示數據。
數據庫有'時間'數據類型。這意味着時間不僅僅是應用程序的數據類型。 –
謝謝。爲什麼選擇「1/1/2000」而不是1970年的基準時間。這裏有什麼原因。謝謝。 –
因爲大多數Rails開發者在1970年都沒有活着?說真的,可能沒有什麼特別的原因,他們只需要一個日期和2000-01-01看起來不錯。 –