mysql時間格式和Java時間格式的對應方式
更新時間:2023年08月29日 08:46:44 作者:紫金小飛俠
這篇文章主要介紹了mysql時間格式和Java時間格式的對應方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
在 MySQL 中有兩種存儲時間的數(shù)據類型 DATETIME 和 TIMESTAMP ,它們在數(shù)據庫實際應用中,各有各的優(yōu)勢和劣勢。
以下將詳細詳解兩個數(shù)據類型的區(qū)別,以及用實戰(zhàn)案例說明它們的使用場景。
一. DATETIME 和 TIMESTAMP 的相同點
兩個數(shù)據類型存儲時間的格式一致。均為 YYYY-MM-DD HH:MM:SS
兩個數(shù)據類型都包含「日期」和「時間」部分。
兩個數(shù)據類型都可以存儲微秒的小數(shù)秒(秒后6位小數(shù)秒)
二. DATETIME 和 TIMESTAMP 的區(qū)別
1.表示范圍
DATETIME
:1000-01-01 00:00:00.000000 到 9999-12-31 23:59:59.999999TIMESTAMP
:‘1970-01-01 00:00:01.000000’ UTC 到 ‘2038-01-09 03:14:07.999999’ UTC
2.空間占用
TIMESTAMP
:占 4 個字節(jié)(小數(shù)秒+3 個字節(jié))DATETIME
:在 MySQL 5.6.4 之前,占 8 個字節(jié) ,之后版本,占 5 個字節(jié)。(小數(shù)秒+3 個字節(jié))
3. 存入時間是否會自動轉換?
TIMESTAMP
:TIMESTAMP 的值是從「當前時間」轉換成 UTC 時間,或者反過來轉換。DATETIME
:不會做任何轉換,也不會檢測時區(qū),你給什么數(shù)據,它存什么數(shù)據。
4.使用 now() 存儲當前時間時
保存的實際值,是否與當前計算機時間一致?
TIMESTAMP
:可能不一致。存儲值會被轉換成 UTC 時間值再存入數(shù)據庫。DATETIME
:與當前時間是一致的。
5.如果存入的是 NULL 時,兩個類型如何存儲?
TIMESTAMP
:會自動存儲當前時間( now() )。DATETIME
:不會自動存儲當前時間,會直接存入 NULL 值。
sql
CREATE TABLE `task_lock` ( `id` bigint NOT NULL AUTO_INCREMENT, `task_name` varchar(255) NOT NULL, `lock_state` varchar(255) NOT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3;
mybatis
<insert id="save" parameterType="com.example.test1.model.TaskLock"> insert into task_lock(task_name,lock_state,update_time) values(#{taskName},#{lockState},#{updateTime}) </insert>
java
@Data @AllArgsConstructor @NoArgsConstructor @Builder public class TaskLock { private Integer id; private String taskName; private String lockState; private Date updateTime; } @Autowired TaskLockMapper taskLockMapper; @Test public void InsetTest() { System.out.println(taskLockMapper); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String currentSimpleDateFormat = simpleDateFormat.format(new Date()); TaskLock taskLock = TaskLock.builder() .lockState("locked") .taskName("123") .updateTime(new Date()) .build(); int result = taskLockMapper.save(taskLock); System.out.println("result:"+result); }
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的區(qū)別
本文給大家分享的是mysql索引中的KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的區(qū)別,即主鍵索引,唯一索引和普通索引的區(qū)別,希望大家能夠喜歡2017-07-07