日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺談數(shù)據(jù)庫(kù)日期類型字段設(shè)計(jì)應(yīng)該如何選擇

瀏覽:376日期:2023-03-06 14:25:10

當(dāng)設(shè)計(jì)一個(gè)產(chǎn)品,其中很多地方要把日期類型保存到數(shù)據(jù)庫(kù)中,如果產(chǎn)品有兼容不同數(shù)據(jù)庫(kù)產(chǎn)品的需求,那么,應(yīng)當(dāng)怎樣設(shè)計(jì)呢?

當(dāng)然,首先想到的是,使用數(shù)據(jù)庫(kù)的 Date 或 DateTime 類型,可是看看不同數(shù)據(jù)庫(kù)這些類型間的區(qū)別吧,真讓人望而止步。Mysql 數(shù)據(jù)庫(kù):它們分別是 date、datetime、time、timestamp 和 year。

  • date :“yyyy-mm-dd”格式表示的日期值
  • time :“hh:mm:ss”格式表示的時(shí)間值
  • datetime: “yyyy-mm-dd hh:mm:ss”格式
  • timestamp: “yyyymmddhhmmss”格式表示的時(shí)間戳值
  • year: “yyyy”格式的年份值。

范圍:

  • date “1000-01-01” 到 “9999-12-31” 3字節(jié)
  • time “-838:59:59” 到 “838:59:59” 3字節(jié)
  • datetime “1000-01-01 00:00:00” 到 “9999-12-31 23:59:59” 8字節(jié)
  • timestamp 19700101000000 到 2037 年的某個(gè)時(shí)刻 4字節(jié)
  • year 1901 到 2155 1 字節(jié)

Oracle 數(shù)據(jù)庫(kù):

Date 類型的內(nèi)部編碼為12

長(zhǎng)度:占用7個(gè)字節(jié)
數(shù)據(jù)存儲(chǔ)的每一位到第七位分別為:世紀(jì),年,月,日,時(shí),分,秒

TIMESTAMP是支持小數(shù)秒和時(shí)區(qū)的日期/時(shí)間類型。對(duì)秒的精確度更高

TIMESTAMP WITH TIME ZONE 類型是 TIMESTAMP 的子類型,增加了時(shí)區(qū)支持,占用13字節(jié)的存儲(chǔ)空間,最后兩位用于保存時(shí)區(qū)信息

INTERVAL 用于表示一段時(shí)間或一個(gè)時(shí)間間隔的方法。在前面有多次提過。INTERVAL有兩種類型.

  • YEAR TO MONTH 能存儲(chǔ)年或月指定的一個(gè)時(shí)間段.
  • DATE TO SECOND 存儲(chǔ)天,小時(shí),分鐘,秒指定的時(shí)間段.

sql server:datetime 和 smalldatetime

  • datetime數(shù)據(jù)類型所占用的存儲(chǔ)空間為8個(gè)字節(jié),其中前4個(gè)字節(jié)用于存儲(chǔ)1900年1月1日以前或以后的天數(shù),數(shù)值分正負(fù),正數(shù)表示在此日期之后的日期,負(fù)數(shù)表示在此日期之前的日期;后4個(gè)字節(jié)用于存儲(chǔ)從此日零時(shí)起所指定的時(shí)間經(jīng)過的毫秒數(shù)。
  • smalldatetime數(shù)據(jù)類型使用4個(gè)字節(jié)存儲(chǔ)數(shù)據(jù)。其中前2個(gè)字節(jié)存儲(chǔ)從基礎(chǔ)日期1900年1月1日以來(lái)的天數(shù),后兩個(gè)字節(jié)存儲(chǔ)此日零時(shí)起所指定的時(shí)間經(jīng)過的分鐘數(shù)。
  • smalldatetime數(shù)據(jù)類型與datetime數(shù)據(jù)類型相似,但其日期時(shí)間范圍較小,從1900年1月1日到2079年6月6日。此數(shù)據(jù)類型精度較低,只能精確到分鐘,其分鐘個(gè)位為根據(jù)秒數(shù)四舍五入的值,即以30秒為界四舍五入。

如果沒有兼容多種數(shù)據(jù)庫(kù)這個(gè)要求,我會(huì)毫不猶豫的使用數(shù)據(jù)庫(kù)的 Date 類型。因?yàn)槿绻褂?Java 框架產(chǎn)生代碼,對(duì)數(shù)據(jù)庫(kù)中定義為 Date 類型的字段,甚至能在頁(yè)面上產(chǎn)生出JS的時(shí)間選擇框,的確能節(jié)省很多開發(fā)時(shí)間。而兼容不同數(shù)據(jù)庫(kù),就希望產(chǎn)品在由一種數(shù)據(jù)庫(kù),遷移到另外一種數(shù)據(jù)庫(kù)時(shí),盡可能小的代價(jià),使用了 Date,看來(lái)就很困難了。

有一個(gè)疑問,不知道目前流行的ORM對(duì)這個(gè)處理得是不是好?因?yàn)楣ぷ鞑辉趺瓷婕斑@方面,所以不大了解。

在之前的設(shè)計(jì)開發(fā)中,因?yàn)橛兄С侄喾N數(shù)據(jù)庫(kù)這種需求,所以首先否定了日期時(shí)間這樣的類型。

曾經(jīng)使用過毫秒數(shù)(Java 的 System.currentTimeMillis())這種方式,但是選用這個(gè)方式,考慮的不是使用起來(lái)是否方便或者數(shù)據(jù)遷移,而是考慮到下面的原因:

Java 取到的毫秒數(shù)是對(duì)時(shí)間點(diǎn)的一種準(zhǔn)確描述。定義如下:java.lang.System.currentTimeMillis(),它返回從 UTC 1970 年 1 月 1 日午夜開始經(jīng)過的毫秒數(shù)。

我們可以看到,這個(gè)定義,保證了這個(gè)時(shí)間值能夠被后續(xù)設(shè)計(jì)開發(fā)的人員正確和準(zhǔn)確的理解,能夠?yàn)樗械膽?yīng)用正確理解,能夠在所有時(shí)區(qū)上正確反映為正常的時(shí)間形式。

當(dāng)時(shí)的產(chǎn)品設(shè)計(jì)是有海外客戶的,所以當(dāng)時(shí)的設(shè)計(jì),在數(shù)據(jù)庫(kù)里保存的,應(yīng)該是一個(gè)“準(zhǔn)確的時(shí)間”。例如“20120926080000”實(shí)際上并沒有嚴(yán)格的表示出時(shí)間,因?yàn)楸本r(shí)間2012年9月26日8點(diǎn)和格林威治時(shí)間2012年9月26日8點(diǎn)顯然是不一樣的。

雖然我們都是在一個(gè)確切的時(shí)區(qū)里,例如中國(guó)都是使用東八區(qū)時(shí)間,但是需要考慮的是:

  • 有些產(chǎn)品是可能有海外客戶的
  • 產(chǎn)品所運(yùn)行的機(jī)器,時(shí)區(qū)的設(shè)置未必都是東八區(qū)。

在這種情況下,如果數(shù)據(jù)庫(kù)里的時(shí)間不準(zhǔn)確,會(huì)給程序運(yùn)行帶來(lái)問題。這種方式最大的缺點(diǎn)在于:

  • 不方便對(duì)時(shí)間進(jìn)行分組查詢,比如按月統(tǒng)計(jì)、按季 統(tǒng)計(jì)
  • DBA在維護(hù)時(shí),不能直觀的根據(jù)返回的行結(jié)果,看到簡(jiǎn)單明了的結(jié)果(看到的是毫秒數(shù))

使用這種方式的特點(diǎn)是犧牲一點(diǎn)易用性和可理解性(不易于維護(hù)和理解),滿足了查詢結(jié)果的直觀性和準(zhǔn)確性要求,同時(shí)最大限度考慮運(yùn)行效率。為了解決這個(gè)問題,我設(shè)計(jì)了一個(gè)輔助的措施,就是建立一個(gè)數(shù)據(jù)庫(kù)函數(shù)來(lái)進(jìn)行時(shí)間轉(zhuǎn)換,把毫秒數(shù)的時(shí)間轉(zhuǎn)為制定時(shí)區(qū)和格式的時(shí)間串,DBA 在維護(hù)時(shí)可以使用。測(cè)試了 Oracle 和 DB2 上,都可以這樣。例如之前的查詢的時(shí)候?yàn)椋?/p>

SELECT username,user_addtime from userinfo

這個(gè)查詢顯示的是毫秒數(shù),使用內(nèi)置函數(shù)后寫成:

SELECT username,date2str(user_addtime) from userinfo

這樣返回的就是東八區(qū)、預(yù)先定義好格式的字符串了。

在之后的設(shè)計(jì)里,還使用過 YYYYMMDDHHmmSST 格式,其中的“T”指時(shí)區(qū),加入時(shí)區(qū),帶來(lái)的影響有:

  • 日期時(shí)間字段就不能在使用數(shù)值來(lái)存儲(chǔ)了,字符串比數(shù)字存儲(chǔ)和檢索的效率都要低。
  • 應(yīng)用程序需要加上額外的處理

帶來(lái)的好處是:

  • 便于 DBA 維護(hù)
  • 到什么時(shí)候,即便沒有看到數(shù)據(jù)庫(kù)設(shè)計(jì)文檔,都能看明白并準(zhǔn)確理解數(shù)據(jù)庫(kù)中一條信息中,這個(gè)字段保存到確切信息

使用這種方式的特點(diǎn)是犧牲一點(diǎn)效率,滿足了查詢結(jié)果的直觀性和準(zhǔn)確性要求。

總結(jié)一下,字段類型的選擇,還是根據(jù)場(chǎng)景的需要來(lái)選擇,從功能、效率要求、持續(xù)開發(fā)的要求、維護(hù)的要求幾個(gè)方面綜合考慮。

到此這篇關(guān)于淺談數(shù)據(jù)庫(kù)日期類型字段設(shè)計(jì)應(yīng)該如何選擇的文章就介紹到這了,更多相關(guān)數(shù)據(jù)庫(kù)日期類型字段設(shè)計(jì)內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: MsSQL
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久久精品网| 国产精品日本| 日本不卡一区二区三区| 丝瓜av网站精品一区二区| 国产视频一区免费看| 亚洲二区三区不卡| 亚洲激情婷婷| 视频一区二区中文字幕| 日韩精品一二区| 在线精品一区二区| 日韩一区二区三区四区五区| 免费在线视频一区| 中文字幕日韩欧美精品高清在线| 亚洲资源网站| 欧美久久久网站| 国产精品久久久久久模特| 欧美激情 亚洲a∨综合| 91一区二区三区四区| 99久久婷婷这里只有精品| 亚洲国产日韩欧美在线| 亚洲伊人精品酒店| 欧美在线日韩| 成人精品久久| 国产综合激情| 免费看欧美美女黄的网站| 天海翼精品一区二区三区| 欧美天堂在线| 国产一区二区三区黄网站| 亚洲成人不卡| 99在线|亚洲一区二区| 亚洲精品日本| 久久精品国产网站| 欧美日韩在线播放视频| 综合欧美精品| 久久免费福利| 亚洲手机视频| 日韩成人在线看| 久久一区国产| 国产在线欧美| 欧美影院视频| 日韩久久视频| 亚洲综合福利| 精品中文在线| 婷婷色综合网| 国产伦精品一区二区三区视频| 热三久草你在线| 鲁大师成人一区二区三区| 国产精品流白浆在线观看| 国产麻豆久久| 日本免费一区二区视频| аⅴ资源天堂资源库在线| 香蕉精品999视频一区二区| 久久国产尿小便嘘嘘| 亚洲美女久久精品| 在线精品一区二区| 国产高潮在线| 亚洲三级在线| 国产suv精品一区二区四区视频| 图片区亚洲欧美小说区| 国产九一精品| 亚洲v在线看| 国产精品视频一区二区三区四蜜臂 | 热久久久久久| 在线手机中文字幕| 亚洲精品欧美| 秋霞影院一区二区三区| 91成人在线| 黄色精品网站| 国产videos久久| 亚洲字幕久久| 伊伊综合在线| 国产亚洲精品美女久久久久久久久久| 999国产精品视频| 国产精品成人自拍| 日韩专区欧美专区| 日本欧美不卡| 美女性感视频久久| 天堂va在线高清一区| 国产尤物精品| 国产成人免费| 欧美精品中文| 久久高清免费观看| 久久精品电影| 狂野欧美性猛交xxxx| 亚洲视频二区| 久久久亚洲一区| 精品国产亚洲一区二区三区大结局| 亚洲色图网站| 欧美日韩激情| 中国字幕a在线看韩国电影| 国产日韩三级| 日韩一区二区三区在线看| 日韩午夜av| 久久国产欧美| 日韩伦理福利| 精品视频在线你懂得| 国产日韩视频在线| 日韩精选在线| 视频在线观看一区| 在线国产一区二区| 日韩精品1区| 久久久久免费| 精品国产乱码久久久久久1区2匹| 欧美一区二区三区久久精品| 男人的天堂久久精品| 黄色成人91| 黄色国产精品| 亚洲视频播放| 亚洲在线观看| 夜夜嗨一区二区三区| 激情久久婷婷| 亚洲成人精品| 久久久精品网| 久久中文字幕av一区二区不卡| 国产suv精品一区二区四区视频| 欧美日韩一区二区三区四区在线观看 | 日韩高清中文字幕一区二区| 国产一区调教| 成人在线丰满少妇av| 免费亚洲一区| 精品久久免费| 黄在线观看免费网站ktv| 久久精品国产99| 久久精品伊人| 欧美激情另类| 色黄视频在线观看| 91看片一区| 99久久激情| 亚洲国产专区| 国产精品嫩草99av在线| 免费欧美一区| 久久高清一区| 日韩不卡一区二区| 国产精品一区二区三区av麻| 国产毛片精品久久| 精品久久视频| 日韩在线综合| 日韩一区二区三区免费播放| 久久久久久美女精品| 国产精品99一区二区| av不卡免费看| 日韩精品高清不卡| 国产精品magnet| 色婷婷亚洲mv天堂mv在影片| 精品日韩视频| 尤物精品在线| 日本h片久久| 麻豆91精品视频| 成人片免费看| 日韩视频在线一区二区三区| 香蕉久久久久久| 牛牛精品成人免费视频| 粉嫩av一区二区三区四区五区 | 亚洲日韩中文字幕一区| 久久精品72免费观看| 精品91福利视频| 欧美~级网站不卡| 亚洲精品伦理| 国产精品视频一区二区三区| 黄毛片在线观看| 99在线观看免费视频精品观看| 亚洲v天堂v手机在线| 国产高清亚洲| 免费看av不卡| 亚洲自拍另类| 国产精品极品国产中出| 成人亚洲欧美| 免费观看在线综合| 国产精品一区二区三区四区在线观看| 国产成人调教视频在线观看| 国产一区欧美| 91精品麻豆| 亚洲天堂一区二区| 国产视频一区三区| 国产免费播放一区二区| 久久久噜噜噜| 欧美一级久久| 久久精品亚洲欧美日韩精品中文字幕| 日韩制服丝袜av| 精品香蕉视频| 日韩精品一二三四| 高清在线一区| 亚洲专区视频| 亚洲黄色免费看| 亚洲精品少妇| 国产aⅴ精品一区二区四区| 国产视频一区三区| 精品高清久久| 日韩在线一二三区| 电影91久久久| 亚洲免费毛片| 免费国产自久久久久三四区久久| 久久国产生活片100| 在线成人直播| 日本激情一区| 欧美片第1页综合| 宅男在线一区| 欧美a级一区二区| 丝袜a∨在线一区二区三区不卡| 国内揄拍国内精品久久|