首页 >> 常识问答 >

问SQL 之 CONVERT 函数用法 SQL Server 类型转换函数详解

2026-11-12 16:48:36

答

CONVERT 函数是 SQL Server 里面专门做数据类型转换的内置函数,核心作用就是把一种数据类型转换成另外一种指定的数据类型,最常用场景是把日期时间类型转成指定格式的字符串,也可以把数字,字符,小数之间互相转换,很多新手容易把 CONVERT 和 CAST 搞混,CAST 是标准 SQL 通用写法,语法更简单,但是 CONVERT 是 SQL Server 独有的函数,最大优势就是转换日期的时候可以指定 style 格式编号,灵活控制日期输出样式,在报表查询,数据清洗,导出数据的时候使用频率非常高,如果类型不兼容,执行 CONVERT 函数的时候会直接抛出转换报错,写语句的时候要提前判断源数据是否可以正常转换,避免整段查询失败。

CONVERT 函数基础语法

CONVERT 目标数据类型 长度 表达式 style

参数说明

目标数据类型,就是想要转换成的类型,比如 varchar int datetime decimal

长度,可选参数,字符类型的时候可以指定最大长度

表达式,需要被转换的原始值,可以是字段,常量,其他函数计算结果

style,可选参数,只有日期时间转字符串的时候使用,是数字编号,用来定义日期输出格式

常用日期 style 编号对照表

style 编号输出格式示例
101mm dd yyyy 月日年
102yy mm dd 年日月
103dd mm yyyy 日月年
112yyyymmdd 纯数字年月日
120yyyy mm dd hh mi ss 标准带时分秒格式
121yyyy mm dd hh mi ss 带毫秒格式

常见转换场景实操

1 日期转字符串

SELECT CONVERT varchar getdate 120

这条语句就是把当前系统时间,转换成 120 格式的文本字符串,报表导出经常使用这个写法

2 字符串转日期

SELECT CONVERT datetime 2026 11 12

把符合格式的文本,转换成 datetime 日期类型,方便后续日期比较计算

3 数字转字符串

SELECT CONVERT varchar 12345

把整型数字转为文本,用于拼接字符串

4 字符串转数字

SELECT CONVERT int 888

把纯数字文本转为 int 类型,用来做数值运算

5 小数类型转换

SELECT CONVERT decimal 18 2 123.456

把数值转为指定精度和小数位数的 decimal 类型

CONVERT 和 CAST 对比

对比项CONVERTCAST
所属数据库SQL Server 专属ANSI SQL 标准
日期格式控制支持 style 编号自定义日期样式不支持自定义日期格式
语法带 style 可选参数CAST 表达式 AS 目标类型
跨库通用性差好

详细使用步骤

第一步,确认源数据类型和目标转换类型,判断两种类型是否兼容,比如字母文本不能直接转换成 int,强行使用 CONVERT 函数会报错。

第二步,书写 CONVERT 函数基础结构,填入目标类型,原始表达式,如果是日期转换,补充对应的 style 编号。

第三步,单独执行这条 SELECT 语句,查看返回结果,确认转换后的格式是否符合预期。

第四步,把写好的 CONVERT 函数嵌入到 WHERE 条件,GROUP BY,ORDER BY 或者报表字段里面,作为查询语句的一部分。

第五步,处理异常数据,如果源字段里面存在脏数据,转换报错,可以搭配 TRY_CONVERT 函数,转换失败的时候返回 null,不会中断整条查询。

使用注意要点

CONVERT 函数转换失败会直接报错,大批量数据清洗的时候,脏数据会导致整个查询语句执行失败,这个场景优先推荐 TRY_CONVERT。

style 编号只对日期时间转换生效,做数字字符转换的时候,填写 style 参数没有意义。

转换之后的数据类型会改变原有排序和比较规则,比如日期转成字符串之后,就不能直接使用日期函数做日期运算。

不同版本 SQL Server 对部分 style 编号支持保持一致,但是特殊世纪格式编号在新版数据库有细微变化。

【常见问题】

问题 1 SQL 之 CONVERT 函数可以在 MySQL 里面使用吗

回答 1 SQL 之 CONVERT 函数是 SQL Server 专属写法,MySQL 虽然也有 CONVERT,但是语法和用途不一样,MySQL 的 CONVERT 主要做字符集转换,不支持 SQL Server 里面日期 style 编号,不能直接照搬 SQL 之 CONVERT 函数的写法。

问题 2 SQL 之 CONVERT 函数转换报错是什么原因

回答 1 SQL 之 CONVERT 函数转换报错,一般是源数据和目标类型不兼容,比如带汉字的文本转 int,或者日期文本格式和识别格式不匹配,使用 SQL 之 CONVERT 函数前,需要检查源字段里面的脏数据。

问题 3 SQL 之 CONVERT 函数和 TRY_CONVERT 有什么区别

回答 1 SQL 之 CONVERT 函数转换失败会直接抛出错误中断查询,TRY_CONVERT 是增强版本,转换失败返回 null,不会报错,处理大批量脏数据的时候,优先选择 TRY_CONVERT,日常干净数据场景继续使用 SQL 之 CONVERT 函数。

【免责申明】

本内容基于 SQL Server 数据库公开语法整理,不同版本 SQL Server 对 CONVERT 函数支持细节存在差异,详细参数和 style 编号请参考微软官方文档,本内容仅作为 SQL 学习参考,不代表生产环境最优方案。

 

相关阅读

最新文章