Microsoft SQL Server/DataTypes
参见[1]
char
编辑分为非UNICODE字符和UNICODE字符两大类,后者以N识别。
- char(n) 是固定长度的字符串,最多 8,000 个字节;
- varchar(n) 是可变长度的字符串,最多 8,000 个字节;
- varchar(max) 是可变长度的字符串,最多 2 GB个字节;
- text 是可变长度的字符串,最多 2GB 字节数据。
- nchar(n) 是固定长度的Unicode 数据,最多 4,000 个字符;
- nvarchar(n) 是可变长度的Unicode 数据,最多 4,000 个字符;
- nvarchar(max) 是可变长度的 Unicode 数据,最多 536,870,912 个字符;
- ntext 是可变长度的Unicode 数据,最多 2GB 字符数据。
Binary类型
编辑- binary(n) 固定长度的二进制数据,最多 8,000 字节;
- varbinary(n) 是可变长度的二进制数据,最多 8,000 字节;
- varbinary(max) 是可变长度的二进制数据,最多2GB字节;
- image 是可变长度的二进制数据,最多2GB。
确切数值类型
编辑- bit 允许取值范围为:0、1 或 NULL
- tinyint 从 0 到 255 的所有数,存储1字节;
- smallint 从 -32768到32767,存储2字节
- int 从 -2,147,483,648 到 2,147,483,647 的所有数字,储存4字节;
- bigint:,储存8字节
- decimal(p,s) 固定精度和比例的数字,允许从 -10^38 +1 到 10^38 -1 之间的数字,p 参数指示可以存储的最大位数(小数点左侧和右侧),p 必须是 1 到 38 之间的值,默认是 18;s 参数指示小数点右侧存储的最大位数,s 必须 是 0 到 p 之间的值,默认是 0。储存5-17字节。ISO规定,DECIMAL和DEC是同义词,所以写DECIMAL或DEC是一样的
- numeric(p,s) 等价于decimal(p,s)
- smallmoney
- money
近似数值类型
编辑- real 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据,储存4字节等等多种数字类型
- float(n), n取值为24则占4字节;n取值53则占8字节,这为默认情形。
日期时间
编辑参见:System.Data.SqlDbType
- datetime:从1753年到9999年,精度3.33ms。8字节。在使用时会舍入到舍入到 .000、.003 或 .007 秒三个增量,示例 2014-12-03 17:06:15.007。对应于.NET里面的System.DateTime类型。 DateTime字段类型要用 GETDATE()
- datetime2:从1753年到9999年,精度100ns。6-8字节。SQL Server 2008 中新的日期时间类型。对应的时间格式是 yyyy-MM-dd HH:mm:ss.fffffff ,7个f,精确到0.1微秒(μs),示例 2014-12-03 17:23:19.2880929 。DateTime2字段类型要用 SYSDATETIME() 。DATETIME2(n)
这个n是秒精度,n的范围是0到7,对于小于3的精度,它需要6个字节; 对于介于3和4之间的精度,它需要7个字节; 对于所有其他精度,它需要8个字节。
- smalldatetime:从1900年到2079年,精度1分钟。4字节
- date:从0000年1月1日至9999年12月31日,3字节
- time:仅存储时间,精度100ns,3-5字节。TIME(p)--n是秒精度,p范围是0-7,如果没指定默认是7。
- datetimeoffset:与datetime2相同,外加时区偏移。8-10字节。SQL Server 2008 中新的日期时间类型。列名 AT TIME ZONE 'China Standard Time'
- timestamp:存储内部时钟值,当创建、修改行时该字段会更新。每个表只能有一个该类型字段。
如果开发新的应用程序,则应使用 time、 date、 datetime2和 datetimeoffest 数据类型。因为这些类型符合 SQL 标准,并且更具可移植性。此外,time、 datetime2和 datetimeoffest 具有更高的秒精度,并且 datetimeoffest 支持时区。
如果要将create_at列的默认值设置为当前日期和时间,则使用以下ALTER TABLE语句:
ALTER TABLE dbo.product_colors ADD CONSTRAINT df_current_time DEFAULT CURRENT_TIMESTAMP FOR created_at;
SQLServer 中如何比较日期大小?先将日期字符串变成日期类型。如convert(datetime,'2012-3-15')
。再使用where
子句:where time_field <= convert(datetime,'2012-3-15')
其他数据类型
编辑- cursor 对于包含对游标引用的变量或存储过程output参数
- rowversion 在数据库中自动生成的独一无二的二进制数。
- hierarchyid 表示树层次结构中的树位置
- uniqueidentifier 16-byte GUID
- sql_variant 存储其他数据类型的值
- XML 将XML数据存储在列中,或XML类型的变量
- Spatial Geometry type(空间几何类型) 在平坐标系中表示数据
- Spatial Geography type(空间地理类型) 存储椭球(圆形地球)数据,例如GPS纬度和经度坐标
- table 暂时存储结果集以供以后处理
数据类型转换
编辑使用函数:CONVERT(data_type(length),data_to_be_converted,style)
其中:
- data_type(length)为目标数据类型(带有可选的长度)
- data_to_be_converted 为需要转换的值
- style为日期时间的输出格式。如121对应ISO 8601格式。