數(shù)據(jù)庫(kù)中date、time和timestamp類(lèi)型讀取和寫(xiě)入

存儲(chǔ)格式

date:yyyy-mm-dd
time:hh:mm:ss
timestamp:yyyy-mm-dd hh:mm:ss

對(duì)應(yīng)Java類(lèi)型

date:java.sql.Date
time:java.sql.Time
timestamp:java.sql.Timestamp
上述三種類(lèi)型都是繼承自java.util.Date侵俗,所以Java中獲取的結(jié)果最后都是轉(zhuǎn)換為java.util.Date進(jìn)行處理的,轉(zhuǎn)換之后對(duì)應(yīng)的時(shí)間(long)是不變的。

Java利用JDBC從數(shù)據(jù)庫(kù)中獲取日期數(shù)據(jù)

相關(guān)建表語(yǔ)句:

CREATE TABLE `time_table` (
  `date1` date DEFAULT NULL,
  `time1` time DEFAULT NULL,
  `timestamp1` timestamp NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `time_table` VALUES ('2020-08-04', '14:49:54', '2020-07-22 14:49:56');

此時(shí)數(shù)據(jù)庫(kù)中的數(shù)據(jù)為:
image.png

Java從數(shù)據(jù)庫(kù)中讀取日期的數(shù)據(jù)的時(shí)候可能會(huì)有類(lèi)型轉(zhuǎn)換纬朝,例如jdbcType為timestamp而Java讀取的數(shù)據(jù)類(lèi)型是java.sql.Time渐苏,jdbcType為date而Java讀取的數(shù)據(jù)類(lèi)型是java.sql.TimeStamp掀潮。
不同類(lèi)型的轉(zhuǎn)換遵從以下原則(以下的輸出都是轉(zhuǎn)換為java.util.Date進(jìn)行輸出格式為:yyyy-MM-dd HH:mm:ss):

  1. jdbcType為time,Java獲取類(lèi)型為java.sql.Date琼富,所有信息都會(huì)丟失輸出為:1970-01-01 00:00:00
  2. jdbcType為date仪吧,Java獲取類(lèi)型為java.sql.Time,所有信息都會(huì)丟失輸出為:1970-01-01 00:00:00
  3. timestamp分為date和time兩部分鞠眉,date部分"最原始"的值為:1970-01-01, time部分"最原始"的值為:00:00:00
  4. 只會(huì)從數(shù)據(jù)庫(kù)獲取已有的部分來(lái)匹配自己需要的部分薯鼠,自己不需要的部分設(shè)置為"最原始的值"。

如果滿足1或者2則不會(huì)用到規(guī)則3和4
針對(duì)規(guī)則4用以下例子進(jìn)行說(shuō)明

  • timestamp1已有的部分為date和time凡蚜,java.sql.Time需要的部分為time人断,不需要的部分為date,所以輸出為1970-01-01 16:07:22
java.sql.Time sqlTime2 = rs.getTime("timestamp1");
Date javaDate = new Date(sqlTime2.getTime());
System.out.println(dateFormat.format(javaDate));
  • time1已有的部分為time朝蜘,java.sql.Time所需要的部分為time恶迈,不需要的部分為date,所以輸出為1970-01-01 14:49:54
java.sql.Time sqlTime1 = rs.getTime("time1");
Date javaDate = new Date(sqlTime1.getTime());
System.out.println(dateFormat.format(javaDate));

總結(jié)

數(shù)據(jù)庫(kù)字段最好用timestamp并且獲取數(shù)據(jù)的時(shí)候不要用java.sql.Time谱醇,這樣才最有可能保證數(shù)據(jù)的準(zhǔn)確性暇仲。
感覺(jué)time類(lèi)型沒(méi)什么用。

JDBC向數(shù)據(jù)庫(kù)中寫(xiě)數(shù)據(jù)

向數(shù)據(jù)庫(kù)中寫(xiě)數(shù)據(jù)的時(shí)候一般是將java.util.Date轉(zhuǎn)換為相應(yīng)的格式副渴,基本上可以正確的設(shè)置奈附,代碼片段如下:

Connection coon = DriverManager.getConnection(URL, name, Password);
String sql = "INSERT INTO `time_table` VALUES (?, ?, ?)";
PreparedStatement preparedStatement = coon.prepareStatement(sql);
Date javaDate = new Date();
// 類(lèi)型正常成功設(shè)置。
preparedStatement.setDate(1, new java.sql.Date(javaDate.getTime()));
preparedStatement.setTime(2, new java.sql.Time(javaDate.getTime()));
preparedStatement.setTimestamp(3, new java.sql.Timestamp(javaDate.getTime()));
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末煮剧,一起剝皮案震驚了整個(gè)濱河市斥滤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌勉盅,老刑警劉巖佑颇,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異草娜,居然都是意外死亡挑胸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)宰闰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)茬贵,“玉大人簿透,你說(shuō)我怎么就攤上這事〗庠澹” “怎么了老充?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)舆逃。 經(jīng)常有香客問(wèn)我蚂维,道長(zhǎng),這世上最難降的妖魔是什么路狮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任虫啥,我火速辦了婚禮,結(jié)果婚禮上奄妨,老公的妹妹穿的比我還像新娘涂籽。我一直安慰自己,他們只是感情好砸抛,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布评雌。 她就那樣靜靜地躺著,像睡著了一般直焙。 火紅的嫁衣襯著肌膚如雪景东。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,196評(píng)論 1 308
  • 那天奔誓,我揣著相機(jī)與錄音斤吐,去河邊找鬼。 笑死厨喂,一個(gè)胖子當(dāng)著我的面吹牛和措,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜕煌,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼派阱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了斜纪?” 一聲冷哼從身側(cè)響起贫母,我...
    開(kāi)封第一講書(shū)人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盒刚,沒(méi)想到半個(gè)月后腺劣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伪冰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年誓酒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了樟蠕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贮聂。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡靠柑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吓懈,到底是詐尸還是另有隱情歼冰,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布耻警,位于F島的核電站隔嫡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏甘穿。R本人自食惡果不足惜腮恩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望温兼。 院中可真熱鬧秸滴,春花似錦、人聲如沸募判。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)届垫。三九已至释液,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間装处,已是汗流浹背误债。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留符衔,地道東北人找前。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像判族,于是被迫代替她去往敵國(guó)和親躺盛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359