日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

日期居然用字符串保存?我笑了

發布時間:2025/3/16 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 日期居然用字符串保存?我笑了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文經授權轉載自微信公眾號:后端進階


我發現數據庫有些日期居然用字符串保存?于是跟幾個小伙伴討論了關于數據庫的日期應該要怎么保存的問題,其實我一直都建議直接用數值保存時間戳,為什么我要這么建議呢?

以下,我會從時區的概念來跟你們解釋一下,為什么用數值保存時間戳是最好的方案,同時也為了分享出來,讓更多開發小伙伴留意這些細節性的東西。

相信時區對于很多人來說的很熟悉,因為地球是圓的,在地球上不同角落看到的太陽上升的角度都是不同的,即每個人對于時間的顯示都是不一樣的,

舉個例子:

此時處于東 8 區的我們北京時間是 10 點,那么處于東 1 區的時間就是 3 點,但是他們的時間是等價的:


"2019-06-20 10:00 +8:00" = "2019-06-20 3:00 +1:00"


所以說,對于不同時區的人來說,顯示的時間是不一樣的,那么此時你是如何將將時間保存到數據中的呢?

我姑且假設你用的是 new Date() 方法來保存當時日期,但據我所知道的,數據庫的 DateTime 類型是沒有時區信息的,如果你此時用 DateTime 格式保存日期,就會丟失時區信息,如果你的服務器更該地址,從數據庫讀出來的日期數據就是錯誤的!

可能你會說,那我用 timeStamp 類型保存總不會丟失時區信息了吧?確實沒丟失,沒毛病。但是據我所知道的,timeStamp 保存的時間最長不能超過 2037 年,而且你要考慮每個數據的 timeStamp 類型都有可能不一樣。

至于用字符串來存儲時間,就更加不推薦了,姑且不從時區來說,你比較日期大小也是個問題,我舉個例子:


to_char(SYSDATE, '2019-06-01 00:00:00') > START_TIME


要比較一個時間大小,我需要這么做,還需要將系統時間轉成字符串來給你對比,而且在轉換成字符串比較時,數據庫內部也會將其轉換成時間來比較,你覺得這種查詢條件會好到哪里去?

我們也知道在 JDK8 中新的時間 API LocalDateTime 中,有著豐富的時區轉換的方法可用,但即便你說你精通 LocalDateTime 的各種花式用法,你也不得不面對繁雜的轉換。

所以,我們需要一個擁有「絕對是時間」,來幫助我們記錄日期,幫我們節省下轉換的時間,這個「絕對時間」就是時間戳,時間戳的定義是從一個基準時間開始算起,這個基準時間是「1970-1-1 00:00:00 +0:00」,從這個時間開始,用整數表示,以秒計時,隨著時間的流逝這個時間整數不斷增加。這樣一來,我只需要一個數值,就可以完美地表示時間了,而且這個數值是一個絕對數值,即無論的身處地球的任何角落,這個表示時間的時間戳,都是一樣的,生成的數值都是一樣的,并且沒有時區的概念,所以在系統的中時間的傳輸中,都不需要進行額外的轉換了,只有在顯示給用戶的時候,才轉換為字符串格式的本地時間。

而且很重要的一點就是,在現有的編程語言中,都提供了方法來獲取時間戳,這對于我們不同語言的項目交互來說,不要太方便!所以在這里我強烈建議前后端關于時間的交互,都用時間戳來交互。

這時,可能有同學又來杠一波,你用一個出數值來表示時間,我查數據庫時,以我的眼力和口算,根本不知道時間是多少,我覺得這個根本不需要擔心啊,你查數據庫無非是查看需要的數據而已,你在 sql 里面對時間戳字段加個轉換函數就好了,比如:


from_unixtime(1561053690000)


以上時間戳是我寫這篇文章的時間。

如果你還要繼續杠,說我就是要在數據庫表中看到時間,我覺得如果你要這樣,為什么還需要前端,直接拿數據庫當前端展示就好了。

我總結一下數據庫用數值保存時間戳的諸多好處:

1.在數據庫中日期比較不要太方便,小學一年級就會的數學題,而且性能好;2.數值對于任何系統交互來說都不存在障礙;3.基于絕對時間的數值存儲,不存在時區問題;4.在交互過程中,摒棄沒必要的重重轉換,一個數字走天下,用戶需要顯示,前端只需要拿到時間戳顯示正確的本地時間;5.解決了由于各個數據庫對于時間實現的不一樣導致的問題,比如說 Mysql 的時間函數跟 Oracle 會有一些差別,假如你現在的 sql 有某些時間函數,換了數據庫很可能就會出錯。


有道無術,術可成;有術無道,止于術

歡迎大家關注Java之道公眾號



好文章,我在看??

總結

以上是生活随笔為你收集整理的日期居然用字符串保存?我笑了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女露胸无遮挡 | 黄色一级淫片 | 日韩精品一区二区三区在线观看 | 综合狠狠 | 三级电影在线看 | 君岛美绪在线 | 永久免费看mv网站入口78 | 日本高清视频网站 | 日本毛片在线观看 | 顶级毛茸茸aaahd极品 | 欲色视频| 国产欧美一区二区三区国产幕精品 | 伊人ab | 激情综合婷婷 | 日韩欧美国产高清 | 男人狂揉女人下部视频 | 成年人黄色片网站 | 国产视频一区二区三区四区五区 | 色妞在线 | 最新日韩精品 | 成人福利网站在线观看 | 成人精品三级av在线看 | 免费日批网站 | 久久夜色精品国产噜噜亚洲av | 国产小视频在线观看免费 | 亚洲乱妇老熟女爽到高潮的片 | 黄色片视频| 日本特级黄色 | 乱人伦xxxx国语对白 | 久久国产亚洲精品无码 | 午夜鲁鲁| 国产精品va | 欧美日韩在线国产 | 日韩一区二区不卡视频 | 日韩一二三区视频 | 一个色综合久久 | 91性生活| 色噜噜亚洲 | 欧美性猛交69 | 国产视频一级 | 色妻影院 | 色综合天天综合网国产成人网 | 国产精品一区二区无线 | 精品人妻一区二区三区四区久久 | 国产成人小视频 | 爱爱视频日本 | 最好看的电影2019中文字幕 | 99热这里只有精品8 国产一卡二 | 四川黄色一级片 | 风韵少妇性饥渴推油按摩视频 | 在线观看成人小视频 | 日韩精品在线免费观看 | 国产精品久久久久久久av福利 | 日日干日日干 | 黄色三级免费 | 日韩av一区二区三区 | 狠狠的色| 冲田杏梨一区二区三区 | 日韩欧美国产激情 | xxx老太太| 五月天综合久久 | 最新中文字幕久久 | 欧美一区三区二区在线观看 | 国产男男一区二区三区 | 一二三区精品 | 中文字幕一区二区三区视频 | 毛片基地视频 | av草逼 | 男人插女人网站 | 好大好爽好舒服 | 国产精品视频免费看 | av高清| 神马久久午夜 | 天天影视亚洲 | 国产成人99 | 夜夜撸影院 | 污网站免费看 | 国产精品无码一区二区三 | 久久久久99精品成人片三人毛片 | 性高潮久久久久久 | 一个人看的视频www 色就是色网站 | 成人福利视频导航 | 欧美一级淫片007 | 色小妹av | av片手机在线观看 | 国产精品无码内射 | 亚洲爱色 | 久久久网 | 韩国三级hd中文字幕有哪些 | 久久这里只有精品首页 | 91精品国产综合久久国产大片 | 午夜视频一区 | 欧美性xxxx图片 | 舐丝袜脚视频丨vk | 伊人精品一区二区三区 | 极品美女扒开粉嫩小泬 | 综合久久综合 | 经典三级久久 | 日韩一区二区三区电影 |