MySQL中TIMESTAMP類(lèi)型返回日期時(shí)間數(shù)據(jù)中帶有T的解決
TIMESTAMP類(lèi)型返回日期時(shí)間數(shù)據(jù)中帶有 T
場(chǎng)景描述
MySQL 中使用 TIMESTAMP 類(lèi)型
實(shí)體類(lèi)使用 java.util.Date 類(lèi)型
返回 JSON 數(shù)據(jù):
通過(guò)注解格式化(方法一)
可以在日期類(lèi)型屬性上,或者 GET 方法加上 Jackson 的 @JsonFormat 注解方式來(lái)格式化,例如:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime;
結(jié)果:
通過(guò)全局配置(方法二)
@Configuration public class WebMvcConfig { @Bean MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper mapper = new ObjectMapper(); mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); converter.setObjectMapper(mapper); return converter; } }
MySQL時(shí)間類(lèi)型timestamp知識(shí)點(diǎn)
mysql日期時(shí)間類(lèi)型
日期類(lèi)型 | 字節(jié) | 最小值 | 最大值 |
---|---|---|---|
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 | 00:00:00 |
TimeStamp | 4 | 197001010800001 | 2038年 |
Time | 3 | -838:59:59 | 838:59:59 |
year | 1 | 1901 | 2155 |
知識(shí)點(diǎn):
- 1 如果需要經(jīng)常插入或者更新日期為當(dāng)前時(shí)間 則通常使用Timestamp,timestamp值返回后顯示為”YYYY-MM-DD HH:MM:SS”格式的字符串
- 2 如果只表示年份可以用year 他比date占用更少的空間year有2位或者4位格式的年默認(rèn)為4位
- 3 每種日期類(lèi)型都有一個(gè)有效值范圍如果超出這個(gè)范圍將以零值進(jìn)行存儲(chǔ)
DATE TIME DATETIME為最常用
實(shí)例:
CREATE TABLE t (d date , t time , dt datetime);
desc t
insert INTO t VALUES(NOW(),NOW(),NOW())
select * from t
DATETIME是date和time的結(jié)合
Timestamp實(shí)例
CREATE TABLE ttt (t timestamp);
系統(tǒng)自動(dòng)給timestamp加上了默認(rèn)值
INSERT INTO ttt VALUES(NULL)
select * from ttt
插入null 系統(tǒng)自動(dòng)插入了當(dāng)前時(shí)間戳
mysql中只給表中的第一個(gè)timestamp字段類(lèi)型設(shè)置默認(rèn)值為當(dāng)前日期 如果有第二個(gè)timestamp類(lèi)型則默認(rèn)值設(shè)置為0
alter TABLE ttt add t2 timestamp;
SHOW CREATE TABLE ttt;
CREATE TABLE `ttt` ( `t` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `t2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=MyISAM DEFAULT CHARSET=utf8
mysql一個(gè)表中值允許一列的默認(rèn)值為current_timestamp
INSERT INTO ttt VALUES(null,null)
update ttt set t2 = '2015-11-28 03:00:40' where t='2015-11-27 03:00:40'
t2 變了 t也變化成了當(dāng)前時(shí)間 這是一個(gè)大坑 尤其是在一些需要按創(chuàng)建時(shí)間排序的需求中
所以結(jié)論是在mysql中使用時(shí)間字段timestamp時(shí)注意一定要 加上初始化的值 并且不能是current_timestamp
修改t為有初始值
alter TABLE ttt change `t` `t` timestamp default '0000-00-00 00:00:00' NOT NULL ; desc ttt
此時(shí)再去
update ttt set t2 = '2015-11-28 04:00:40' where t='2015-11-27 03:02:50'
t沒(méi)發(fā)生變化
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL與JDBC之間的SQL預(yù)編譯技術(shù)講解
這篇文章主要介紹了MySQL與JDBC之間的SQL預(yù)編譯技術(shù)講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11通過(guò)案例分析MySQL中令人頭疼的Aborted告警
這篇文章通過(guò)案例跟大家分析了MySQL中令人頭疼的Aborted告警的相關(guān)資料,文中將Aborted告警介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06centos7.4系統(tǒng)中yum源安裝mysql 5.6
本文給大家介紹的是如何在centos7.4系統(tǒng)中通過(guò)yum源安裝MySQL 5.6數(shù)據(jù)庫(kù),CentOS7默認(rèn)數(shù)據(jù)庫(kù)是mariadb, 但是 好多用的都是mysql ,但是CentOS7的yum源中默認(rèn)好像是沒(méi)有mysql的,今天我們就來(lái)看看具體如何操作2018-09-09MySql樹(shù)形結(jié)構(gòu)(多級(jí)菜單)查詢?cè)O(shè)計(jì)方案
本文主要介紹了MySql樹(shù)形結(jié)構(gòu)(多級(jí)菜單)查詢?cè)O(shè)計(jì)方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03MySQL數(shù)據(jù)庫(kù)忽略大小寫(xiě)的配置方法
這篇文章主要給大家介紹了MySQL數(shù)據(jù)庫(kù)忽略大小寫(xiě)的配置方法,文中通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01mysql5.6 主從復(fù)制同步詳細(xì)配置(圖文)
這篇文章主要介紹了mysql5.6 主從復(fù)制同步詳細(xì)配置,但不是很詳細(xì)推薦大家看下腳本之家以前的文章,需要的朋友可以參考下2016-04-04教你自動(dòng)恢復(fù)MySQL數(shù)據(jù)庫(kù)的日志文件(binlog)
如果MySQL服務(wù)器啟用了二進(jìn)制日志,你可以使用mysqlbinlog工具來(lái)恢復(fù)從指定的時(shí)間點(diǎn)開(kāi)始2014-05-05