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