datetime 和 smalldatetime
用于表示某天的日期和时间的数据类型。
datetime 和 smalldatetime
表示某天的日期和时间。
| 数据类型 | 范围 | 精确度 |
|---|---|---|
| datetime | 1753 年 1 月 1 日到 9999 年 12 月 31 日 | 3.33 毫秒 |
| smalldatetime | 1900 年 1 月 1 日到 2079 年 6 月 6 日 | 1 分钟 |
备注
Microsoft SQL Server 2005 Database Engine 用两个 4 字节的整数内部存储 datetime 数据类型的值。 第一个 4 字节存储“基础日期”(即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参照日期。另外一个 4 字节存储天的时间(以午夜后经过的毫秒数表示)。
smalldatetime 数据类型存储天的日期和时间,但精确度低于 datetime。数据库引擎 将 smalldatetime 值存储为两个 2 字节的整数。第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后经过的分钟数。
如下表所示,将 datetime 值舍入到 .000、.003、或 .007 秒的增量。
| 示例 | 舍入后的示例 |
|---|---|
| 01/01/98 23:59:59.999 | 1998-01-02 00:00:00.000 |
| 01/01/98 23:59:59.995, 01/01/98 23:59:59.996, 01/01/98 23:59:59.997 或 01/01/98 23:59:59.998 | 1998-01-01 23:59:59.997 |
| 01/01/98 23:59:59.992, 01/01/98 23:59:59.993 或 01/01/98 23:59:59.994 | 1998-01-01 23:59:59.993 |
| 01/01/98 23:59:59.990 或 01/01/98 23:59:59.991 | 1998-01-01 23:59:59.990 |
将等于或小于 29.998 秒的 smalldatetime 值向下舍入到最接近的分钟数;将等于或大于 29.999 秒的值向上舍入到最接近的分钟数。
| 复制代码 | |
|---|---|
--Returns time as 12:35.
SELECT CAST('2003-05-08 12:35:29.998' AS smalldatetime);
GO
--Returns time as 12:36.
SELECT CAST('2003-05-08 12:35:29.999' AS smalldatetime);
GO | |
分类: SQL2005
本文详细解析了SQL Server中的datetime和smalldatetime数据类型,包括它们的范围、精确度以及内部存储方式。通过具体示例展示了这些类型在时间和日期上的舍入规则,为数据库设计者提供了实用的指南。
1万+

被折叠的 条评论
为什么被折叠?



