简单总结两个最近用到的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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值