mysql 数据库存时间最好是时间戳还是格式的时间
我理解的时间戳格式是这样的:1409556216984 如果存这个,用int类型还转不下呀,应该存什么类型,长度
如果是时间格式,前台还需要转换,是不是性能不佳
后端是:java
PHP中文网2017-04-17 11:57:39
雖然我認為討論技術問題時,宣揚「自己的系統實際表現有多牛(所以別人也一定要這麼做)」不是什麼好的論調……但我必須認同一點: 這個問題的權衡還真就不是從效能上考慮的。時間戳記和字面時間的互轉只是簡單的計算,所消耗的資源遠遠達不到引發問題的地步。
使用時間戳記的唯一考量是:你的應用是否涉及多時區,時間資料是否和時區相關。如果回答“是”,那麼就必須使用時間戳,沒有任何第二方案。
只有時間戳表示的時間是準確、恆定的,就連時間+日期+時區也不行-時區這玩意兒可不是恆定不變的…
其餘的都不是什麼重要的考慮,自己喜歡就行。
一般認為堅持使用時間戳總是好的,在程式設計中只會提供便利,不會引入壞處。 至於查看數據時暴露時間戳原值,那是顯示環節的不完備(或故意設計),而不是用時間戳用錯了,切勿張冠李戴抹黑好東西。
PHP中文网2017-04-17 11:57:39
這個問題是咱們程式設計師典型的架構權衡問題,甚至可以說鑽牛角尖(當然有時候鑽牛角尖不是不好)。
題主,其實無論你存時間戳還是用mysql的datetime,甚至是存字串,這基本上都不會造成系統瓶頸,你應該把80%的時間用在解決系統性能消耗佔比80%的問題上去。
我們阿里的系統,能夠支撐單日億級的寫入操作,讀是多少大家更可以YY,而其中使用mysql的系統,時間就用的datetime,所以你完全不用擔心性能的問題了。
用datetime還有個顯而易見的好處,可讀性高。 1409556216984,這個時間戳沒有人能看出來是什麼時間,對未來問題排查和定位也會加大複雜度。
PHP中文网2017-04-17 11:57:39
當然存成時間戳,除非你除了讀取之外不將它作它用。
你只想到了把時間戳格式化成字串花 CPU,就沒想到你存成字串花磁碟空間麼?而且你不用取某個時間段之內的數據,或是比較兩個數據的時間麼?
大家讲道理2017-04-17 11:57:39
我比較傾向與存的時候用格式的時間, 然後取的時候後台可以在controller層使用jodaTime的getMillis()函數取到毫秒,然後前端用JS的Date()去封裝,便可以根據客戶端所在的時區顯示對應的時間。 (這麼便利的就可以完成日期的國際化主要得益於:1.伺服器存的是時間戳記。2.客戶端js)