zoukankan      html  css  js  c++  java
  • SQL中的cast和convert的用法和区别以及时间转换

      在 mysql 操作中我们经常需要对数据进行类型转换,此时我们应该使用的是cast()或convert()。两者的对比:

      相同点:都是进行数据类型转换,实现的功能基本等同。

      不同点:两者的语法不同,cast(value as type) 、 convert(value,type)

    一、语法

    1、使用 CAST:CAST ( expression AS data_type )
    2、使用 CONVERT:CONVERT (data_type[(length)], expression [, style])

    3、参数说明:

    (1)expression:是任何有效的表达式。

    (2)data_type:目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。

    (3)length:nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。

    (4)style:日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。

    二、cast和convert的代码示例

    select CAST('123' as int)   -- 123
    select CONVERT(int, '123')  -- 123
    
    select CAST(123.4 as int)   -- 123
    select CONVERT(int, 123.4)  -- 123 
    
    select CAST('123.4' as int)
    select CONVERT(int, '123.4')
    -- Conversion failed when converting the varchar value '123.4' to data type int.
    
    select CAST('123.4' as decimal)  -- 123
    select CONVERT(decimal, '123.4') -- 123 
    
    select CAST('123.4' as decimal(9,2))  -- 123.40
    select CONVERT(decimal(9,2), '123.4') -- 123.40
    
    declare @Num money
    set @Num = 1234.56
    select CONVERT(varchar(20), @Num, 0)  -- 1234.56
    select CONVERT(varchar(20), @Num, 1)  -- 1,234.56
    select CONVERT(varchar(20), @Num, 2)  -- 1234.5600

    三、SQL中CAST和CONVERT用在时间转换上的区别

      cast 和 convert 都是用来转化数据类型的,功能上是差不多的。

      在时间转化中一般用到 convert,因为它比 cast 多加了一个 style,可以转化成不同时间的。打个简单的例子吧,比方说查找一下当前的时间,select getdate(),而我们只需要到年月日而已,这时我们就可以把它转化为 select convert(varchar(100),GETDATE(),111) 转化成我们需要的,而 select CAST(GETDATE() as varchar(30)) cast 就没办法或者是转化过程比较繁琐。

      convert 时间后面的 style 值不同产生的时间格式也不一样,具体可参看网站http://www.w3school.com.cn/sql/func_convert.asp

  • 相关阅读:
    HDU 2089 不要62 (数位DP)
    数位DP总结
    怒刷DP之 HDU 1160
    将时间转为几小时前,几周前,几天前等
    link与import的区别
    什么是虚拟DOM?为啥虚拟DOM可以提升性能?
    前端面试问题2
    【转载】什么是闭包? 闭包的优缺点 闭包的应用场景
    小程序发布审核不通过
    前端面试常问 问题总结
  • 原文地址:https://www.cnblogs.com/goloving/p/15223539.html
Copyright © 2011-2022 走看看