datetime和timestamp的區別

2021-09-24 15:54:19 字數 2897 閱讀 9989

timestamp和datetime的相同點:

兩者都可用來表示yyyy-mm-dd hh:mm:ss型別的日期。

timestamp和datetime的不同點:

1>兩者的儲存方式不一樣

`對於timestamp:

它把客戶端插入的時間從當前時區轉化為utc(世界標準時間)進行儲存。

查詢時,將其又轉化為客戶端當前時區進行返回。

`對於datetime:

不做任何改變,基本上是原樣輸入和輸出。

下面,我們來驗證一下

首先建立兩種測試表,乙個使用timestamp格式,乙個使用datetime格式。

mysql> create table test(id int,hiredate timestamp);

query ok, 0 rows affected (0.01 sec)

mysql> insert into test values(1,'20151208000000');

query ok, 1 row affected (0.00 sec)

mysql> create table test1(id int,hiredate datetime);

query ok, 0 rows affected (0.01 sec)

mysql> insert into test1 values(1,'20151208000000');

query ok, 1 row affected (0.00 sec)

mysql> select * from test;

+------+---------------------+

| id | hiredate |

+------+---------------------+

| 1 | 2015-12-08 00:00:00 |

+------+---------------------+

1 row in set (0.01 sec)

mysql> select * from test1;

+------+---------------------+

| id | hiredate |

+------+---------------------+

| 1 | 2015-12-08 00:00:00 |

+------+---------------------+

1 row in set (0.00 sec)

兩者輸出是一樣的。

其次修改當前會話的時區

mysql> show variables like '%time_zone%'; 

+------------------+--------+

| variable_name | value |

+------------------+--------+

| system_time_zone | cst |

| time_zone | system |

+------------------+--------+

2 rows in set (0.00 sec)

mysql> set time_zone='+0:00';

query ok, 0 rows affected (0.00 sec)

mysql> select * from test;

+------+---------------------+

| id | hiredate |

+------+---------------------+

| 1 | 2015-12-07 16:00:00 |

+------+---------------------+

1 row in set (0.00 sec)

mysql> select * from test1;

+------+---------------------+

| id | hiredate |

+------+---------------------+

| 1 | 2015-12-08 00:00:00 |

+------+---------------------+

1 row in set (0.01 sec)

上述「cst」指的是mysql所在主機的系統時間,是中國標準時間的縮寫,china standard time ut+8:00

通過結果可以看出,test中返回的時間提前了8個小時,而test1中時間則不變。這充分驗證了兩者的區別。

2>兩者所能儲存的時間範圍不一樣

timestamp所能儲存的時間範圍為:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999'。

datetime所能儲存的時間範圍為:'1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。

總結:timestamp和datetime除了儲存範圍和儲存方式不一樣,沒有太大區別。

當然,對於跨時區的業務,timestamp更為合適。

www.shengrizhufuyu.cn

Datetime 和多維陣列

c datetime日期型別格式化顯示 1.繫結時格式化日期方法 2.資料控制項如datagrid datalist等的件格式化日期方法 e.item.cell 0 text convert.todatetime e.item.cell 0 text toshortdatestring 3.用str...

python time庫和datetime庫詳解

import time import datetime 重點是元祖 時間戳 格式化的字串之間互相轉化 元祖轉時間戳 使用time.mktime 元祖 元祖轉格式化的字串 使用time.strftime 元祖 時間戳轉元祖 思路,時間戳首先轉化為格式化的字串,再從格式化的字串轉換為元祖 time.st...

datetime比較 datetime模組的使用

datetime模組提供表示和處理日期 時間的一些類此模組的大部分功能,是關於建立和輸出日期與資訊的各種不同方式,其他的主要功能包括數 算,如時間增量的比較和計算。字元 說明 值範圍 一 匯入時間模組 import datetime 使用時需多加乙個datetime.from datetime im...