日期類型python
DATE TIME DATETIME TIMESTAMP YEARmysql
做用:存儲用戶註冊時間,文章發佈時間,員工入職時間,出生時間,過時時間等sql
YEAR YYYY(1901/2155) DATE YYYY-MM-DD(1000-01-01/9999-12-31) TIME HH:MM:SS('-838:59:59'/'838:59:59') DATETIME YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y) TIMESTAMP YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某時)
驗證服務器
mysql> create table t10(born_year year); Query OK, 0 rows affected (0.08 sec) mysql> insert into t10 values -> (1900), -> (1901), -> (2155), -> (2156); Query OK, 4 rows affected, 2 warnings (0.07 sec) Records: 4 Duplicates: 0 Warnings: 2 mysql> select * from t10; +-----------+ | born_year | +-----------+ | 0000 | | 1901 | | 2155 | | 0000 | +-----------+ 4 rows in set (0.03 sec)
============date,time,datetime=========== mysql> create table t11(d date,t time,dt datetime); Query OK, 0 rows affected (0.05 sec) mysql> desc t11; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | d | date | YES | | NULL | | | t | time | YES | | NULL | | | dt | datetime | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 3 rows in set (0.04 sec) mysql> insert into t11 values(now(),now(),now()); Query OK, 1 row affected, 1 warning (0.10 sec) mysql> select * from t11; +------------+----------+---------------------+ | d | t | dt | +------------+----------+---------------------+ | 2016-11-16 | 15:00:51 | 2016-11-16 15:00:51 | +------------+----------+---------------------+ 1 row in set (0.02 sec) ============timestamp=========== mysql> create table t12(time timestamp); Query OK, 0 rows affected (0.12 sec) mysql> insert into t12 values(); Query OK, 1 row affected (0.03 sec) mysql> insert into t12 values(null); Query OK, 1 row affected (0.00 sec) mysql> select * from t12; +---------------------+ | time | +---------------------+ | 2016-11-16 15:03:07 | | 2016-11-16 15:03:28 | +---------------------+ 2 rows in set (0.00 sec)
============注意啦,注意啦,注意啦===========
mysql> create table t13(y year); Query OK, 0 rows affected (0.10 sec) mysql> insert into t13 values -> (50), -> (70); Query OK, 2 rows affected (0.04 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from t13; +------+ | y | +------+ | 2050 | | 1970 | +------+ 2 rows in set (0.00 sec)
============綜合練習===========
mysql> create table student1( -> id int, -> name varchar(10), -> born_year year, -> birth date, -> class_time time, -> reg_time datetime); Query OK, 0 rows affected (0.04 sec) mysql> insert into student1 values -> (1,'alex',"1995","1995-11-11","11:11:11","2017-11-11 11:11:11"), -> (2,'egon',"1997","1997-12-12","12:12:12","2017-12-12 12:12:12"), -> (3,'wsb',"1998","1998-01-01","13:13:13","2017-01-01 13:13:13"); Query OK, 3 rows affected (0.04 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from student1; +------+------+-----------+------------+------------+---------------------+ | id | name | born_year | birth | class_time | reg_time | +------+------+-----------+------------+------------+---------------------+ | 1 | alex | 1995 | 1995-11-11 | 11:11:11 | 2017-11-11 11:11:11 | | 2 | egon | 1997 | 1997-12-12 | 12:12:12 | 2017-12-12 12:12:12 | | 3 | wsb | 1998 | 1998-01-01 | 13:13:13 | 2017-01-01 13:13:13 | +------+------+-----------+------------+------------+---------------------+ 3 rows in set (0.00 sec)
datetime與timestamp的區別spa
在實際應用的不少場景中,MySQL的這兩種日期類型都可以知足咱們的須要,存儲精度都爲秒,但在某些狀況下,會展示出他們各自的優劣。 下面就來總結一下兩種日期類型的區別。 1.DATETIME的日期範圍是1001——9999年,TIMESTAMP的時間範圍是1970——2038年。 2.DATETIME存儲時間與時區無關,TIMESTAMP存儲時間與時區有關,顯示的值也依賴於時區。在mysql服務器, 操做系統以及客戶端鏈接都有時區的設置。 3.DATETIME使用8字節的存儲空間,TIMESTAMP的存儲空間爲4字節。所以,TIMESTAMP比DATETIME的空間利用率更高。 4.DATETIME的默認值爲null;TIMESTAMP的字段默認不爲空(not null),默認值爲當前時間(CURRENT_TIMESTAMP), 若是不作特殊處理,而且update語句中沒有指定該列的更新值,則默認更新爲當前時間。