mysql 日期_「5」学习MySQL日期与时间类型发现:要养成注重细节的习惯
在前面的學(xué)習(xí)中我們提到過字段類型這個概念,本篇的主題就是來講一種常用而相對復(fù)雜的類型:日期與時間。
MySQL中表示日期與時間的數(shù)據(jù)類型有很多種,但主要的不外乎下面五種:
記住上面表中的“范圍”信息很重要,因?yàn)槿掌谂c時間的任何操作都是依賴于此進(jìn)行延展。本文主要以案例的方式展開。
【1】YEAR
--- 創(chuàng)建一個臨時表,字段定義為YEAR類型
create table rq_temp1(a YEAR);
-- 插入數(shù)據(jù)
insert into rq_temp1 values(2018),('2018');
insert into rq_temp1 values(2236);
insert into rq_temp1 values('0'),('00'),('97'),('55');
insert into rq_temp1 values(0),(00,('97'),('55');
從上面的執(zhí)行結(jié)果,結(jié)合YEAR的范圍我們可以分析如下:
- 數(shù)字或字符形式的值insert到表中YEAR字段后都是變成數(shù)字形式顯示;
- 字符的'0'與'00'會轉(zhuǎn)化為2000,而數(shù)字的0與00則直接是0000;
- 不論字符還是數(shù)字形式的1~99都可以轉(zhuǎn)化為對應(yīng)年份。
- 超過2155是無法寫入YEAR類型字段的。
【2】TIME
--- 創(chuàng)建一個臨時表,字段定義為TIME類型
create table rq_temp2(a TIME);
-- 插入數(shù)據(jù)
insert into rq_temp1 values('10:45:59'),('11:11'),('4 14:07'),('6 15'),('30');
從上面的執(zhí)行結(jié)果的可以得出:
- 盡量還是用字符形式做參數(shù);
- 只有一個數(shù)字則表示秒,如果有兩個數(shù)字和一個“:”則自動補(bǔ)充“00”作為秒;
- 前面一個數(shù)字加空格后跟著帶“:”串,則前面數(shù)字要乘以24加上第一個“:”前的數(shù)字作為第一個“:”前的結(jié)果,其他不變。
另外,肯定要測試下超出邊界的效果及如何寫入系統(tǒng)時間。
insert into rq_temp2 values(CURRENT_TIME),(NOW());
【3】DATE
--- 創(chuàng)建一個臨時表,字段定義為DATE類型
create table rq_temp3(a DATE);
-- 插入數(shù)據(jù)
insert into rq_temp3 values('1982-08-13'),('19820813'),('55-11-23'),('970701'),('131123');
insert into rq_temp3 values(9901231),(000101);
insert into rq_temp3 values(99-12-31);
【結(jié)論】
- YYYYMMDD與YYMMDD格式不論數(shù)字還是字符,都可以寫入到DATE類型字段中;
- YYMMDD格式中表示YY數(shù)字00~69轉(zhuǎn)化為2000~2069,而70~99則轉(zhuǎn)化為1970~1999。
至于邊界與系統(tǒng)時間,留待頭友們自己去測試下。
【4】DATETIME與TIMESTAMP
--- 創(chuàng)建一個臨時表,字段定義為DATE類型
create table rq_temp4(a DATETIME,b TIMESTAMP);
-- 插入數(shù)據(jù)
insert into rq_temp4 values('1997-07-01 00:00:00','1997-07-01 00:00:00'),('19970701000000','19970701000000');
insert into rq_temp4(a) values('1097-07-01 00:00:00');
insert into rq_temp4(b) values('1097-07-01 00:00:00');
【結(jié)論】:
- TIMESTAMP未指定值的情況下會自動填充系統(tǒng)時間;
- TIMESTAMP超出范圍的值不能寫入;
- YYYY-MM-DD HH:MM:SS與YYYYMMDDHHMMSS格式都可以表示DATETIME與TIMESTAMP。
最后我們來看一個TIMESTAMP有趣操作:修改時區(qū)。
set time_zone = '+6:00'; --將當(dāng)前的東8區(qū)改為東6區(qū)
insert into rq_temp4(b) values(NOW());
【結(jié)論】
- 不論歷史數(shù)據(jù)還是新insert數(shù)據(jù),TIMESTAMP都自動按新時區(qū)進(jìn)行轉(zhuǎn)換(慢兩個小時);
- DATETIME類型不會自動填充系統(tǒng)時間。
總結(jié)
- 5種日期/時間類型;
- 數(shù)字可以轉(zhuǎn)化為時間。
總結(jié)
以上是生活随笔為你收集整理的mysql 日期_「5」学习MySQL日期与时间类型发现:要养成注重细节的习惯的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python在企业有哪些应用_pytho
- 下一篇: 大家都来扒一扒,玩了哪些游戏花了多少钱。