SQL Server数据类型转换函数cast()和convert()详解 您所在的位置:网站首页 枪支类型 SQL Server数据类型转换函数cast()和convert()详解

SQL Server数据类型转换函数cast()和convert()详解

#SQL Server数据类型转换函数cast()和convert()详解| 来源: 网络整理| 查看: 265

 SQL Server中,数据类型转换函数,常用的函数有cast()和convert()。

cast()和convert()函数比较:

        (1)cast一般更容易使用,convert的优点是可以格式化日期和数值;

        (2)convert一般用于日期和时间类型以及小数之间转换,而cast一般用于小数转数值和字符型;

        (3)convert只是显示转换,而cast是强制转换。

一、cast()函数

        cast()函数使用起来非常简单,语法为:

        cast(字段名 as 转换的类型 )

如:

select cast(123.45 as int)        --123,将float类型转换为int类型 select cast('123.447654' as int)         --消息 245,级别 16,状态 1,第 1 行,在将 varchar 值 '2017.3' 转换成数据类型 int 时失败。 /*123.45为float类型,而'123.447654'为char类型, 带有小数位数的字符串无法直接转化为int类型,但可以直接转化为decimal类型。 */ select cast('123.447654' as decimal)         --123,decimal代表只保留整数部分,不保留小数部分。 select cast('123.447654' as decimal(5,2))        /*123.45,将char类型转换为数值类型,5为精度,代表除小数点外,最长为5位; 2为小数位数,代表小数点后面保留两位小数。 而如果写select cast('123.447654' as decimal(5,3)), 就会报“将 varchar 转换为数据类型 numeric 时出现算术溢出”的错误。 因为在类型转换时,会优先满足整数部分,而'123.447654'中整数部分已经有3位, 小数部分最多就只能有2位,无法保留3位小数,所有会报错。 这时候就需要提高精度,即将数值5增大。*/ select cast('20210922' as date)        --2021-09-22,将char类型转换为日期类型 select cast(getdate() as time)        --22:07:08.4200000,取当前的时间信息,不保留日期

二、convert()函数

语法: convert(data_type(length),expression,style)

值描述data_type(length)规定目标数据类型(带有可选的长度)。expression规定需要转换的值。style规定日期/时间的输出格式。

下面的表格展示了 datetime 或 smalldatetime 转换为字符数据的 style 值:

值 (世纪 yy)值 (世纪 yyyy)输入/输出标准-0 or 100mon dd yyyy hh:miAM (or PM)Default1101mm/dd/yyUSA2102yy.mm.ddANSI3103dd/mm/yyBritish/French4104dd.mm.yyGerman5105dd-mm-yyItalian6106dd mon yy7107Mon dd, yy8108hh:mm:ss-9 or 109mon dd yyyy hh:mi:ss:mmmAM (or PM)Default+millisec10110mm-dd-yyUSA11111yy/mm/ddJapan12112yymmddISO-13 or 113dd mon yyyy hh:mi:ss:mmm (24h)14114hh:mi:ss:mmm (24h)-20 or 120yyyy-mm-dd hh:mi:ss (24h)-21 or 121yyyy-mm-dd hh:mi:ss.mmm (24h)-126yyyy-mm-ddThh:mi:ss.mmm (no spaces)ISO8601-130dd mon yyyy hh:mi:ss:mmmAMHijiri-131dd/mm/yy hh:mi:ss:mmmAMHijiri

如:

SELECT CONVERT(INT, 25.65) --25 select CONVERT(decimal, '123.45') -- 123 select CONVERT(decimal(9,2), '123.45') -- 123.45 SELECT CONVERT(VARCHAR(25),GETDATE()) --09 22 2021 10:31PM SELECT CONVERT(VARCHAR(24),GETDATE(),120) --2021-09-22 22:32:43,最常用,保留日期时间信息 SELECT CONVERT(VARCHAR(10),GETDATE(),102) --2021.09.22,只保留日期信息 SELECT CONVERT(VARCHAR(10),GETDATE(),111) --2021/09/22,只保留日期信息 SELECT CONVERT(VARCHAR(10),GETDATE(),108) --22:34:06,只保留时间信息

参考于:SQL Server CONVERT() 函数 | 菜鸟教程



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有