# 时间数据类型比较

__*比较时间数据类型*__

| Type | Storage | Scope |
| :-- | :-- | :-- |
| `DATE` | 3 bytes | 0000-01-01 to 9999-12-31 |
| `TIME` | 3 bytes | -838:59:59.000000 to 838:59:59.000000 |
| `DATETIME` | 8 bytes | 0000-01-01 00:00:00.000000 to 9999-12-31 23:59:59.999999 |
| `TIMESTAMP` | 4 bytes | 1970-01-01 00:00:01.000000 to 2038-01-19 03:14:07.999999 |
| `YEAR` | 1 byte | 1901 to 2155 |


----------------------------------------------------------------
TiDB 支持 MySQL 所有的日期和时间类型,包括 DATE、TIME、DATETIME、TIMESTAMP 以及 `YEAR`。每种类型都有有效值范围,值为 0 表示无效值。

关于日期和时间值类型,需要注意:

日期部分字面只值必须是"年-月-日"的格式（例如 1998-09-04）,而不是"月-日-年"或"日-月-年"的格式。

如果日期的年份部分是 2 位数,TiDB 会根据年份为两位数的具体规则进行转换。

如果格式必须是数值类型,TiDB 会自动将日期或时间值转换为数值类型。例如:

```
tidb> SELECT NOW(), NOW()+0, NOW(3)+0;
+---------------------+----------------+--------------------+
| NOW()               | NOW()+0        | NOW(3)+0           |
+---------------------+----------------+--------------------+
| 2012-08-15 09:28:00 | 20120815092800 | 20120815092800.889 |
+---------------------+----------------+--------------------+
```