Mysql基礎教程 mysql進階

Mysql日期時間類型



日期時間類型


列類型

存儲范圍

存儲需求

TIME

-838:59:59~838:59:59

3

DATE

1000-01-01~9999-12-31 23:59:59

3

DATETIME

1970-01-01 00:00:01~9999-12-31 23:59:59

8

TIMESTAMP

1970-01-01 00:00:01 UTC~2038-01-09 03:14:07

4

YEAR

1901~2155

1


重點的是year類型,開發中常用的是時間戳,用整型來保存時間戳。



測試year


mysql> CREATE TABLE IF NOT EXISTS test9(
    -> birth YEAR
    -> );
Query OK, 0 rows affected (0.28 sec)


開始為1901,并查詢


mysql> 
mysql> INSERT test9 VALUES(1901);
Query OK, 1 row affected (0.05 sec)


mysql> SELECT * FROM test9;
+-------+
| birth |
+-------+
| 1901 |
+-------+


最大為2155,并查詢


mysql> INSERT test9 VALUES(2155);
Query OK, 1 row affected (0.03 sec)


mysql> SELECT * FROM test9;
+-------+
| birth |
+-------+
|  1901 |
|  2155 |
+-------+
2 rows in set (0.00 sec)


當插入的值大于2155時


mysql> INSERT test9 VALUES(2156);
ERROR 1264 (22003): Out of range value for column 'birth' at row 1


值也可以在字符串


mysql> INSERT test9 VALUES('1988');
Query OK, 1 row affected (0.04 sec)


mysql> SELECT * FROM test9;
+-------+
| birth |
+-------+
| 1901 |
| 2155 |
| 1988 |
+-------+
3 rows in set (0.00 sec)


四位的年份可以,兩位的年份也支持,也可以是字符串的形式。


mysql> INSERT test9 VALUES(12);
Query OK, 1 row affected (0.04 sec)


12代表“2012”


mysql> SELECT * FROM test9;
+-------+
| birth |
+-------+
| 1901 |
| 2155 |
| 1988 |
| 2012 |
+-------+
4 rows in set (0.00 sec)


79代表“1979”


mysql> INSERT test9 VALUES('79');
Query OK, 1 row affected (0.03 sec)


mysql> SELECT * FROM test9;
+-------+
| birth |
+-------+
| 1901 |
| 2155 |
| 1988 |
| 2012 |
| 1979 |
+-------+
5 rows in set (0.00 sec)


還有一個特殊的值“0”會顯示的值為“0000”


mysql> INSERT test9 VALUES(0);
Query OK, 1 row affected (0.05 sec)


mysql> SELECT * FROM test9;
+-------+
| birth |
+-------+
| 1901 |
| 2155 |
| 1988 |
| 2012 |
| 1979 |
| 0000 |
+-------+
6 rows in set (0.00 sec)


如果寫的是字符串的“0”,會顯示的值為“2000”


mysql> INSERT test9 VALUES('0');
Query OK, 1 row affected (0.04 sec)


mysql> SELECT * FROM test9;
+-------+
| birth |
+-------+
| 1901 |
| 2155 |
| 1988 |
| 2012 |
| 1979 |
| 0000 |
| 2000 |
+-------+
7 rows in set (0.00 sec)


輸入字符串“00”


mysql> INSERT test9 VALUES('00');
Query OK, 1 row affected (0.05 sec)


mysql> SELECT * FROM test9;
+-------+
| birth |
+-------+
| 1901 |
| 2155 |
| 1988 |
| 2012 |
| 1979 |
| 0000 |
| 2000 |
| 2000 |
+-------+
8 rows in set (0.00 sec)



測試time


mysql> CREATE TABLE IF NOT EXISTS test10(
    -> test TIME
    -> );
Query OK, 0 rows affected (0.28 sec)


插入12:12:12


mysql> INSERT test10 VALUES('1 12:12:12');
Query OK, 1 row affected (0.06 sec)


查詢時間


mysql> SELECT * FROM test10;
+----------+
| test    |
+----------+
| 36:12:12 |
+----------+
1 row in set (0.00 sec)


插入11:11


mysql> INSERT test10 VALUES('11:11');
Query OK, 1 row affected (0.05 sec)


mysql> SELECT * FROM test10;
+----------+
| test     |
+----------+
| 36:12:12 |
| 11:11:00 |
+----------+
2 rows in set (0.00 sec)


插入1234


mysql> INSERT test10 VALUES('1234');
Query OK, 1 row affected (0.05 sec)


mysql> SELECT * FROM test10;
+----------+
| test     |
+----------+
| 36:12:12 |
| 11:11:00 |
| 00:12:34 |
+----------+
3 rows in set (0.00 sec)


只寫12,以為是秒


mysql> INSERT test10 VALUES('12');
Query OK, 1 row affected (0.03 sec)


mysql> SELECT * FROM test10;
+----------+
| test     |
+----------+
| 36:12:12 |
| 11:11:00 |
| 00:12:34 |
| 00:00:12 |
+----------+
4 rows in set (0.00 sec)


如果以字符串“0”,就顯示為“00:00:00”


mysql> INSERT test10 VALUES('0');
Query OK, 1 row affected (0.03 sec)


mysql> SELECT * FROM test10;
+----------+
| test     |
+----------+
| 36:12:12 |
| 11:11:00 |
| 00:12:34 |
| 00:00:12 |
| 00:00:00 |
+----------+
5 rows in set (0.00 sec)


以數字0輸入,現實的為“00:00:00”


mysql> INSERT test10 VALUES(0);
Query OK, 1 row affected (0.03 sec)


mysql> SELECT * FROM test10;
+----------+
| test     |
+----------+
| 36:12:12 |
| 11:11:00 |
| 00:12:34 |
| 00:00:12 |
| 00:00:00 |
| 00:00:00 |
+----------+
6 rows in set (0.00 sec)


超過時間范圍就報錯


mysql> INSERT test10 VALUES('66');
ERROR 1292 (22007): Incorrect time value: '66' for column 'test' at row 1



測試date


mysql> ? date
Name: 'DATE'
Description:
DATE


A date. The supported range is '1000-01-01' to '9999-12-31'. MySQL
displays DATE values in 'YYYY-MM-DD' format, but permits assignment of
values to DATE columns using either strings or numbers.


URL: http://dev.mysql.com/doc/refman/5.6/en/date-and-time-type-overview.html
mysql> CREATE TABLE IF NOT EXISTS test11(
    -> test DATE
    -> );
Query OK, 0 rows affected (0.37 sec)


輸入“12-6-7”


mysql> INSERT test11 VALUES('12-6-7');
Query OK, 1 row affected (0.07 sec)


查詢text11


mysql> SELECT * FROM test11;
+------------+
| test       |
+------------+
| 2012-06-07 |
+------------+
1 row in set (0.00 sec)


可以自己制定分隔符


mysql> INSERT test11 VALUES('1267');
ERROR 1292 (22007): Incorrect date value: '1267' for column 'test' at row 1
mysql> INSERT test11 VALUES('12 6 7');
ERROR 1292 (22007): Incorrect date value: '12 6 7' for column 'test' at row 1
mysql> INSERT test11 VALUES('12/6/7');
Query OK, 1 row affected (0.07 sec)


mysql> SELECT * FROM test11;
+------------+
| test       |
+------------+
| 2012-06-07 |
| 2012-06-07 |
+------------+
2 rows in set (0.00 sec)


也可以寫成“120607”


mysql> INSERT test11 VALUES('120607');
Query OK, 1 row affected (0.04 sec)


mysql> SELECT * FROM test11;
+------------+
| test       |
+------------+
| 2012-06-07 |
| 2012-06-07 |
| 2012-06-07 |
+------------+
3 rows in set (0.00 sec)


任意指定分隔符


mysql> INSERT test11 VALUES('[email protected]/7');
Query OK, 1 row affected (0.03 sec)


mysql> SELECT * FROM test11;
+------------+
| test       |
+------------+
| 2012-06-07 |
| 2012-06-07 |
| 2012-06-07 |
| 2012-06-07 |
+------------+
4 rows in set (0.00 sec)


Date只有3字節,如何來選擇字段類型,按照你的具體需求具體分析就可以了。



【本文由麥子學院獨家原創,轉載請注明出處并保留原文鏈接】

logo
? 2012-2016 www.jvbprd.live
蜀ICP備13014270號-4 Version 5.0.0 release20160127

免費領取價值1888元求職寶典!

客服熱線 400-862-8862

回到頂部

彩票安徽25选5