搜尋

首頁  >  問答  >  主體

java - mysql 数据库存时间最好是时间戳还是格式的时间

mysql 数据库存时间最好是时间戳还是格式的时间

我理解的时间戳格式是这样的:1409556216984 如果存这个,用int类型还转不下呀,应该存什么类型,长度

如果是时间格式,前台还需要转换,是不是性能不佳

后端是:java

PHPzPHPz2770 天前962

全部回覆(8)我來回復

  • PHP中文网

    PHP中文网2017-04-17 11:57:39

    雖然我認為討論技術問題時,宣揚「自己的系統實際表現有多牛(所以別人也一定要這麼做)」不是什麼好的論調……但我必須認同一點: 這個問題的權衡還真就不是從效能上考慮的。時間戳記和字面時間的互轉只是簡單的計算,所消耗的資源遠遠達不到引發問題的地步。

    使用時間戳記的唯一考量是:你的應用是否涉及多時區,時間資料是否和時區相關。如果回答“是”,那麼就必須使用時間戳,沒有任何第二方案。

    只有時間戳表示的時間是準確、恆定的,就連時間+日期+時區也不行-時區這玩意兒可不是恆定不變的…

    其餘的都不是什麼重要的考慮,自己喜歡就行。

    一般認為堅持使用時間戳總是好的,在程式設計中只會提供便利,不會引入壞處。 至於查看數據時暴露時間戳原值,那是顯示環節的不完備(或故意設計),而不是用時間戳用錯了,切勿張冠李戴抹黑好東西。

    • 日期的字串-時間互轉、計算、比較及時區轉換,請使用後台語言中提供的相關類,不自己造輪子就可以。
    • 可以略微注意2038年問題的陷阱。對於MySQL而言,如果存時間戳記請使用timestamp或bigint,而不要使用int。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 11:57:39

    這個問題是咱們程式設計師典型的架構權衡問題,甚至可以說鑽牛角尖(當然有時候鑽牛角尖不是不好)。
    題主,其實無論你存時間戳還是用mysql的datetime,甚至是存字串,這基本上都不會造成系統瓶頸,你應該把80%的時間用在解決系統性能消耗佔比80%的問題上去。

    我們阿里的系統,能夠支撐單日億級的寫入操作,讀是多少大家更可以YY,而其中使用mysql的系統,時間就用的datetime,所以你完全不用擔心性能的問題了。

    用datetime還有個顯而易見的好處,可讀性高。 1409556216984,這個時間戳沒有人能看出來是什麼時間,對未來問題排查和定位也會加大複雜度。

    回覆
    0
  • 迷茫

    迷茫2017-04-17 11:57:39

    datatime
    對應java.sql.Timestamp

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 11:57:39

    當然存成時間戳,除非你除了讀取之外不將它作它用。

    你只想到了把時間戳格式化成字串花 CPU,就沒想到你存成字串花磁碟空間麼?而且你不用取某個時間段之內的數據,或是比較兩個數據的時間麼?

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 11:57:39

    我比較傾向與存的時候用格式的時間, 然後取的時候後台可以在controller層使用jodaTime的getMillis()函數取到毫秒,然後前端用JS的Date()去封裝,便可以根據客戶端所在的時區顯示對應的時間。 (這麼便利的就可以完成日期的國際化主要得益於:1.伺服器存的是時間戳記。2.客戶端js)

    回覆
    0
  • 阿神

    阿神2017-04-17 11:57:39

    存成時間戳比較好,你在頁面上可能需要不同格式化的時間,這時候就比較方便了。存的時候存timestamp型別。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 11:57:39

    時間戳,絕對利大於弊~只有好處,沒有壞處。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 11:57:39

    存時間戳,仿便轉換,建議

    回覆
    0
  • 取消回覆