简单总结两个最近用到的sql server中的Convert() 函数的用法

第一种用法: 在日期中的使用 把日期类型的数据转换为字符串类型, 并且可以用不同的格式显示日期/时间数据。

http://www.w3school.com.cn/sql/func_convert.asp 这里讲的很好 直接看链接就可以了

CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110) 
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)

结果:
JUNE 09 2019 11:45 PM
06-09-2019
09 JUNE 18
09 JUNE 2019 11:45:46.635


//要是需要把 yyyy-MM-dd HH:mm:ss:fff 这样的形式的数据转换为 yyyy-MM-dd 形式
CONVERT(VARCHAR(10),GETDATE(),120)

 第二种用法: decimal类型的数据保留小数点后几位

declare @rate float=0.26252625

--保留小数点后三位 这种方式是四舍五入
Convert(decimal(18,3),@rate)

print @rate

结果: 
0.263

有一个比较奇怪的现象 就是 decimal and float 都是 sql server中的数据类型

但是 declare @a decimal=0.2222

print @a 结果是0 想要得到打印结果 要将decimal类型转换为varchar类型

declare @d decimal(10,2)
,@result varchar(50)
set @d=123.45

SELECT @result=STR(@d,5, 1); --第二个参数是@d的长度 若长度大于@d则前补空格 第三个参数是保留小数点的位数
print @result

结果:
123.4

 

在网上找了些float 和 decimal 类型的知识 :

在SQL Server中,实际上小数数值只有两种数据类型:float 和 decimal,分别是近似数值和精确数值。其他小数类型,都可以使用float和decimal来替代

float是近似数值,存在精度缺失;decimal是精确数值,不存在精度损失。当数值不允许精度丢失时,使用 decimal数据类型存储数据。在计算小数的除法时,SQL Server 内部隐式升级数据类型,根据小数数值的数据类型,就近向float(24) 或float(53)转换。

除法都是近似计算

 

如果出现一个需求是截断数字而不是让数字四舍五入  怎么办 在网上看到一个很sao的方法

declare @num decimal(9,5) = 123.456 

select round(@num-.005,2) 

print @num

结果:
123.45

 

你可能感兴趣的:(数据库,sql,server)