java和mysql之間的時(shí)間日期類型傳遞

mysql(版本:5.1.50)的時(shí)間日期類型如下:

datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59:59

timestamp 4bytes xxxx-xx-xx xx:xx:xx 1970-01-01 00:00:01到2038

date 3bytes xxxx-xx-xx 1000-01-01到9999-12-31

year 1bytes xxxx 1901到2155

time 3bytes xx:xx:xx -838:59:59到838:59:59(為了滿足時(shí)間的加減運(yùn)算)


java(1.6) 中能保存時(shí)間日期類型的類主要有

java.util.Date

java.util.Calendar

java.sql.Date

java.sql.Time

java.sql.Timestamp


以前從mysql中查詢出來(lái)的時(shí)間日期類型弛说,都放在java.util.Date類型里面了钝荡。這樣帶來(lái)一系列的問(wèn)題,首先這個(gè)類提供的時(shí)間操作函數(shù)太少潮梯,一般都需要轉(zhuǎn)換成java.util.Calendar再去操作;其次即使使用了java.util.Calendar煎娇,也不是很方便颜曾,一個(gè)很簡(jiǎn)單的想法钳幅,需要寫很多代碼才能實(shí)現(xiàn);java.util.Date的數(shù)據(jù)內(nèi)容為xxxx-xx-xx xx:xx:xx澜汤,有時(shí)候不需要時(shí)間蚜迅,只需要日期。從數(shù)據(jù)庫(kù)中取值出來(lái)的日期類型放到這個(gè)類中的時(shí)候俊抵,會(huì)在時(shí)間位自動(dòng)補(bǔ)上當(dāng)前時(shí)間谁不。這使得本來(lái)兩個(gè)日期在數(shù)據(jù)庫(kù)中是相等的,取出來(lái)放到這個(gè)類得時(shí)候就不再相等了徽诲,需要去考慮時(shí)間上的誤差刹帕,很是頭疼吵血。


java提供與mysql方便交互的三種數(shù)據(jù)類型


java.sql.Date

java.sql.Time

java.sql.Timestamp

它們都是繼承java.util.Date,算是對(duì)該類的精簡(jiǎn)偷溺,很適合跟數(shù)據(jù)庫(kù)交互蹋辅。


===========java注入數(shù)據(jù)庫(kù)==========

java類型 ? mysql類型 ? ? ? ?成功與否

date ? ? ? ? date ? ? ? ? ? ? ? yes

date ? ? ? ? time ? ? ? ? ? ? ? no

date ? ? ? ? timestamp ? ? ? no

date ? ? ? ? datetime ? ? ? ? no

time ? ? ? ? date ? ? ? ? ? ? ? no

time ? ? ? ? time ? ? ? ? ? ? ? yes

time ? ? ? ? timestamp ? ? ? no

time ? ? ? ? datetime ? ? ? ? no

timestamp date ? ? ? ? ? ? ?yes

timestamp time ? ? ? ? ? ? ?yes

timestamp timestamp ? ? yes

timestamp datetime ? ? ? ?yes

==========end?java注入數(shù)據(jù)庫(kù)========

總規(guī)律,如果A完全包含B挫掏,則A可以向B注入數(shù)據(jù)侦另,否則報(bào)錯(cuò)


==========從數(shù)據(jù)庫(kù)提取到j(luò)ava ==========

mysql類型 ? ?java類型 ? ? 成與否

date ? ? ? ? ? ? date ? ? ? ? yes

date ? ? ? ? ? ? time ? ? ? ? yes --------------缺少的部分使用歷元

date ? ? ? ? ? timestamp ? yes --------------缺少的部分使用歷元

time ? ? ? ? ? date ? ? ? ? ? yes --------------缺少的部分使用歷元

time ? ? ? ? ? time ? ? ? ? ? yes

time ? ? ? ? ?timestamp ? ?yes --------------缺少的部分使用歷元

timestamp date ? ? ? ? ? yes

timestamp time ? ? ? ? ? yes

timestamp timestamp ? yes

datetime ? ? ?date ? ? ? ? yes

datetime ? ? ?time ? ? ? ? yes

datetime ? ?timestamp ? yes

==========end?從數(shù)據(jù)庫(kù)提取到j(luò)ava=======

不會(huì)出錯(cuò),缺少的部分使用歷元尉共,而不是當(dāng)前日期時(shí)間


null to db(null) =====> 也是null

null to db(not null)=======> 數(shù)據(jù)庫(kù)報(bào)錯(cuò)

db(null) to java==========> 如果單字段出來(lái)传睹,則整個(gè)entity都是null,如果帶著其他不是null的字段出來(lái)洒敏,則可以實(shí)例化entity矗蕊,本身字段依然是null

db(not null) to java==========> 如果包含日期,則報(bào)錯(cuò)杠河,否則為000

最優(yōu)解決方案碌尔,定義成可以為null

java.sql時(shí)間系統(tǒng)的運(yùn)算系列

after,before

compareTo原小于參數(shù)返回<0,等于返回=0券敌,大于返回>0

優(yōu)點(diǎn):于數(shù)據(jù)庫(kù)同類型唾戚,可以方便傳輸(無(wú)論是從DB到src還是反方向),方便比較大小

缺點(diǎn):缺少運(yùn)算單元待诅,不適合時(shí)間跳躍的運(yùn)算和間隔的運(yùn)算

總結(jié):calendar具有強(qiáng)大的跳躍運(yùn)算和間隔運(yùn)算能力叹坦,在需要的時(shí)候,可以將sql系列的時(shí)間轉(zhuǎn)成calendar卑雁。

先設(shè)置calendar為歷元募书,然后從sql系列時(shí)間中轉(zhuǎn)換,最后再轉(zhuǎn)回sql系列時(shí)間测蹲。

calendar只用于時(shí)間有跳躍的轉(zhuǎn)換莹捡,對(duì)比運(yùn)算統(tǒng)一使用sql系統(tǒng),這樣代碼將更清晰


date 和 calendar怎么初始化為格林威治時(shí)間

new date(0)

calendar.setTimeInMillis(0)

sql系列時(shí)間

static valueOf

new XX(0)獲得歷元

new XX(year+1900, month+1,day,hour,minute,second,nano)已過(guò)時(shí)扣甲,創(chuàng)建也沒(méi)錯(cuò)

toString或者SimpleDateFormat

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末篮赢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子琉挖,更是在濱河造成了極大的恐慌启泣,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件示辈,死亡現(xiàn)場(chǎng)離奇詭異寥茫,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)顽耳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門坠敷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)妙同,“玉大人,你說(shuō)我怎么就攤上這事膝迎≈嘀悖” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵限次,是天一觀的道長(zhǎng)芒涡。 經(jīng)常有香客問(wèn)我,道長(zhǎng)卖漫,這世上最難降的妖魔是什么费尽? 我笑而不...
    開(kāi)封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮羊始,結(jié)果婚禮上旱幼,老公的妹妹穿的比我還像新娘。我一直安慰自己突委,他們只是感情好柏卤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著匀油,像睡著了一般缘缚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敌蚜,一...
    開(kāi)封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天桥滨,我揣著相機(jī)與錄音,去河邊找鬼弛车。 笑死齐媒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帅韧。 我是一名探鬼主播里初,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼忽舟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起淮阐,我...
    開(kāi)封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤叮阅,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后泣特,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體浩姥,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年状您,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了勒叠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兜挨。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖眯分,靈堂內(nèi)的尸體忽然破棺而出拌汇,到底是詐尸還是另有隱情,我是刑警寧澤弊决,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布噪舀,位于F島的核電站,受9級(jí)特大地震影響飘诗,放射性物質(zhì)發(fā)生泄漏与倡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一昆稿、第九天 我趴在偏房一處隱蔽的房頂上張望纺座。 院中可真熱鬧,春花似錦溉潭、人聲如沸净响。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)别惦。三九已至,卻和暖如春夫椭,著一層夾襖步出監(jiān)牢的瞬間掸掸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工蹭秋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扰付,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓仁讨,卻偏偏與公主長(zhǎng)得像羽莺,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子洞豁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光劍書架上的書閱讀 3,856評(píng)論 2 8
  • 舉個(gè)例子給你吧盐固,mysql的 datetime字段 有表: CREATE TABLE `u_user` ( `id...
    三萬(wàn)_chenbing閱讀 681評(píng)論 0 0
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,446評(píng)論 0 13
  • 贊暖風(fēng) …… 暖風(fēng)項(xiàng)目多,溫暖我心窩丈挟,大家想知道刁卜,聽(tīng)我慢慢說(shuō): 文化來(lái)養(yǎng)老,跳舞又唱歌曙咽,學(xué)費(fèi)有補(bǔ)助蛔趴,自己花不多。 ...
    自強(qiáng)自立胡楊閱讀 305評(píng)論 2 1
  • 記得六月份看過(guò)一檔綜藝節(jié)目例朱,主場(chǎng)嘉賓有薛之謙孝情,沈夢(mèng)辰鱼蝉,汪涵,還有幾個(gè)不太熟悉的面孔箫荡,為了活躍氣氛魁亦,薛之謙現(xiàn)場(chǎng)唱了《...
    藤子不二熊閱讀 212評(píng)論 0 0