一、类型属性
1.1 UNSIGNED
mysql> create table t(
-> a int unsigned,
-> b int unsigned
-> )Engine = InnoDb;
Query OK, 0 rows affected (0.37 sec)
mysql> insert into t values(1,2);
Query OK, 1 row affected (0.03 sec)
mysql> select a - b from t;
ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(`test`.`t`.`a` -
`test`.`t`.`b`)'
在MySQL数据库中,对于UNSINGNED的操作,返回都是UNSINGNED。因此会返回错误
1.2 ZEROFILL:设定列的宽度,如果宽度小于设定的宽度,则自动填充0
mysql> alter table t change column a a int(4) unsigned zerofill;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> select * from t;
+------+------+
| a | b |
+------+------+
| 0001 | 2 |
+------+------+
1 row in set (0.00 sec)
二、日期和时间类型

2.1 TIMESTAMP
datetime与timestamp显示的时候都是标准的"yyyy-MM-dd HH:MMSS"格式。但是有如下的不同。
建表时,timestamp可以设定一个默认值,而datetime不行;
在更新表时,可以设置timestamp类型的列自动更新为当前时间。
mysql> create table t3(
-> a int,
-> b timestamp default current_timestamp on update current_timestamp
-> )engine = InnoDB;
Query OK, 0 rows affected (0.22 sec)
mysql> insert into t3(a) values(1);
Query OK, 1 row affected (0.04 sec)
mysql> select * from t3;
+------+---------------------+
| a | b |
+------+---------------------+
| 1 | 2018-06-19 10:33:58 |
+------+---------------------+
1 row in set (0.00 sec)
2.2 与日期和时间相关的函数
1、返回当前时间
mysql> select now(),current_timestamp(),sysdate()\G;
*************************** 1. row ***************************
now(): 2018-06-19 10:38:02
current_timestamp(): 2018-06-19 10:38:02
sysdate(): 2018-06-19 10:38:02
1 row in set (0.01 sec)
2、时间加减函数
DATE_ADD(date,INTERVAL expr unit) -- 增加时间
DATE_SUB(date,INTERVAL expr unit) -- 减少时间
mysql> select now() as now,
-> DATE_ADD(now(),INTERVAL 1 DAY) as tomorrow,
-> DATE_SUB(now(),INTERVAL 1 DAY) as yesterday\G;
*************************** 1. row ***************************
now: 2018-06-19 10:43:24
tomorrow: 2018-06-20 10:43:24
yesterday: 2018-06-18 10:43:24
1 row in set (0.02 sec)
上面的例子中使用了DAY,还可以用其他的时间单位,例如MICROSECOND,SECOND,MINUTE,HOUR,WEEK,MONTH等类型
2、DATE_FORMAT函数:
mysql> select DATE_FORMAT(now(),'%Y%m%d') as datetime\G;
*************************** 1. row ***************************
datetime: 20180619
1 row in set (0.00 sec)
三、数字类型

网友评论