表达式:是常量、变量、列或函数等与运算符的任意组合。以下参数中表达式类型是指表达式经运算后返回的值的类型
数据类型转换函数
(以下两种函数功能类似,但是convert在进行日期转换时还提供了丰富的样式,cast只能进行普通的日期转换)
函数名称 | 参数 | 示例 | 描述 |
convert | (数据类型[(长度)],表达式[,样式]) | select convert(nvarchar,123) 返回123 select N'年龄:'+convert(nvarchar,23) 返回 年龄:23(注意:如果想要在结果中正确显示中文需要在给定的字符串前面加上N,加N是为了使数据库识别 Unicode字符) select convert(nvarchar ,getdate()) 返回04 28 2009 10:21PM select convert(nvarchar ,getdate(),101) 返回04/28/2009 select convert(nvarchar ,getdate(),120) 返回2009-04-28 12:22:21 select convert(nvarchar(10) ,getdate(),120) 返回2009-04-28 | 将一种数据类型的表达式显式转换为另一种数据类型的表达式。 长度:如果数据类型允许设置长度,可以设置长度,例如 varchar(10) 样式:用于将日期类型数据转换为字符数据类型的日期格式的样式。见下表 |
cast | (表达式 as 数据类型[(长度)]) | select cast(123 as nvarchar)返回123 select N'年龄:'+cast(23 as nvarchar) 返回 年龄:23 | 将一种数据类型的表达式显式转换为另一种数据类型的表达式。 |
日期类型数据转换为字符数据类型的日期格式的部分样式表
不带世纪数位 (yy) | 带世纪数位 (yyyy) | 标准 | 输入/输出 |
- | 0 或 100 | 默认设置 | mon dd yyyy hh:miAM(或 PM) |
1 | 101 | 美国 | mm/dd/yyyy |
2 | 102 | ANSI | yy.mm.dd |
3 | 103 | 英国/法国 | dd/mm/yy |
4 | 104 | 德国 | dd.mm.yy |
5 | 105 | 意大利 | dd-mm-yy |
| 120 | ODBC 规范 | yyyy-mm-dd hh:mi:ss(24h) |
当两个不同数据类型的表达式用运算符组合后,数据类型优先级规则指定将优先级较低的数据类型优先转换为优先级较高的数据类型。如果此转换不是所支持的隐式转换,则返回错误。当两个操作数表达式具有相同的数据类型时,运算的结果便为该数据类型。如果需要把优先级高的数据类型转换为优先级低的数据类型时需要使用数据类型转换函数进行显示转换。
SQL Server 2005 对数据类型使用以下优先级顺序(先高后低):
1、用户定义数据类型(最高)2、sql_variant 3、xml 4、datetime 5、smalldatetime 6、float 7、real 8、decimal 9、money 10、smallmoney 11、bigint 12、int 13、smallint 14、tinyint 15、bit 16、ntext 17、text 18、image 19、timestamp 20、uniqueidentifier
21、nvarchar(包括 nvarchar(max))22、nchar 23、varchar (包括 varchar(max))24、char 25、varbinary(包括 varbinary(max))26、binary(最低)
更多:可以使用的 style 值:
Style ID | Style 格式 |
---|---|
100 或者 0 | mon dd yyyy hh:miAM (或者 PM) |
101 | mm/dd/yy |
102 | yy.mm.dd |
103 | dd/mm/yy |
104 | dd.mm.yy |
105 | dd-mm-yy |
106 | dd mon yy |
107 | Mon dd, yy |
108 | hh:mm:ss |
109 或者 9 | mon dd yyyy hh:mi:ss:mmmAM(或者 PM) |
110 | mm-dd-yy |
111 | yy/mm/dd |
112 | yymmdd |
113 或者 13 | dd mon yyyy hh:mm:ss:mmm(24h) |
114 | hh:mi:ss:mmm(24h) |
120 或者 20 | yyyy-mm-dd hh:mi:ss(24h) |
121 或者 21 | yyyy-mm-dd hh:mi:ss.mmm(24h) |
126 | yyyy-mm-ddThh:mm:ss.mmm(没有空格) |
130 | dd mon yyyy hh:mi:ss:mmmAM |
131 | dd/mm/yy hh:mi:ss:mmmAM |
相关文章: