datetime timestamp year date time
drop table test;
create table test (dt datetime, ts timestamp, y year, d date, t time);
insert into test values(now(),now(),now(),now(),now());
select * from test;
2018-07-14 21:55:13, 2018-07-14 21:55:13, 2018, 2018-07-14, 21:55:13
timestamp
1、timestamp 值返回後顯示為「yyyy-mm-dd hh:mm:ss」格式的字串,顯示寬度固定為 19 個字元。如果想要獲得數字值,應在 timestamp 列新增+0。
select ts+0 from test; // 20180714215513
2、系統給 timestamp 自動建立預設值 current_timestamp
drop table test;
create table test(id timestamp);
insert into test values(null);
select * from test; // 2007-07-04 16:37:24
注意,mysql只給表中的第乙個timestamp欄位設定預設值為系統日期,如果有第二個timestamp型別,則預設值設定為0值。
alter table test add id2 timestamp;
insert into test values(null, null);
select * from test; // 2018-07-14 21:04:150000-00-00 00:00:00
可以修改id2的預設值為其他常量日期,但是不能再修改為current_timestmap,因為mysql規定timestamp型別字段只能有一列的預設值為current_timestmap,如果強制修改,系統會報錯。
drop table test;
create table test(id timestamp, id2 timestamp);
alter table test alter column id2 set default current_timestamp; // 報錯
alter table test alter column id2 set default 20180714215513;
3、timestamp還有乙個重要特點,就是和時區相關。當插入日期時,會先轉換為本地時區後存放;而從資料庫裡面取出時,也同樣需要將日期轉換為本地時區後顯示。這樣,兩個不同時區的使用者看到的同乙個日期可能是不一樣的。
drop table test;
create table test (
`id1` timestamp not null default current_timestamp,
`id2` datetime default null
show variables like 'time_zone'; // system 檢視當前時區,我們在中國,這裡的「system」實際是東八區(+8:00)
insert into t8 values(now(), now());
select * from t8;
| 2007-09-25 17:26:50 | 2007-09-25 17:26:50 |
修改時區為東九區: set time_zone='+9:00';
select * from t8;
| 2007-09-25 18:26:50 | 2007-09-25 17:26:50 |
timestamp和datetime的表示方法非常類似,區別主要有以下幾點。
1、timestamp支援的時間範圍較小,其取值範圍從19700101080001到2023年的某個時間,而datetime是從1000-01-01 00:00:00到9999-12-31 23:59:59,範圍更大。
2、表中的第乙個timestamp列自動設定為系統時間。如果在乙個timestamp列中插入null,則該列值將自動設定為當前的日期和時間。在插入或更新一行但不明確給timestamp列賦值時也會自動設定該列的值為當前的日期和時間,當插入的值超出取值範圍時,mysql認為該值溢位,使用「0000-00-00 00:00:00」進行填補。
3、timestamp的插入和查詢都受當地時區的影響,更能反應出實際的日期。而datetime則只能反應出插入時當地的時區,其他時區的人檢視資料必然會有誤差的。
mysq比較時間
在oracle中使用時間函式to date習慣了,在oracle中時間的加減也非常簡單,直接加減即可。在mysql中時間的函式很多,非常自由。在專案中經常用到的就是時間的加減。比如60天前,oracle中直接就是sysdate 60,mysql中就不行。對時間加減的函式是 加adddate 減sub...
mySql 時間型別
datetime 時間日期 yyyy mm dd hh ii ss 表示範圍 1000到9999有0值 0000 00 00 00 00 00 date 日期 就是datetime中的date部分 time 時間 段 指定的摸個區間之間 時間到 時間 timerstarmap 時間戳 1970開始 ...
mysql怎麼新增時間 MYSQL中新增時間
1.在建立新記錄和修改現有記錄的時候都對這個資料列重新整理 timestamp default current timestamp on update current timestamp 2.在建立新記錄的時候把這個字段設定為當前時間,但以後修改時,不再重新整理它 timestamp default...