首页 > 代码库 > 总结CONVERT的使用

总结CONVERT的使用

 前端时间,执行写好的SQL时,出现了"从char数据类型到datetime数据类型的转换导致datetime值越界"。经过自己的折腾,发现数据表中的WarningTime为NULL,所以这里的转化就出现了问题,同时在此测试了一下不为datetime的char类型的数据进行CONVERT时,也会报错。所以:当使用CONVERT对日期类型的数据进行转换为B类型,除了注意B类型的数据具备日期类型数据的特性外,也要考虑到NULL的情况,这里的B指的是其他格式类型.

  出现问题的代码:

select left(convert(varchar(10),WarnigTime,120),7) as YearMonth,    MaintenanceArea,    Company,    sum(WaN) as NewAddNum  from     ( select CONVERT(varchar(50),WarnigTime,23)as WarnigTime ,           MaintenanceArea,           Company,SUM(case when WarningID<>0 then 1 else 0 end) as WaN       from dbo.t_xdz_warning Wa,dbo.t_xdz_station St       where Wa.StationID=St.ID       group by MaintenanceArea,Company,WarnigTime )as t group by left(convert(varchar(10),WarnigTime,120),7),MaintenanceArea,Companyorder by YearMonth desc             

  注:这里使用了LEFT函数:

LEFT(<character_expression>,<integer_expression>)----返回character的左边的前integer长度的字符----那么,对应的可以知道有RIGHT函数RIGHT(<character_expression>,<integer_expression>)--返回character的右边的后integer长度的字符

  在此借这个机会总结一下CONVERT的使用.

  CONVERT()函数是把日期类型转化为新数据类型的通用函数.

使用:

CONVERT(data_type(length),data_to_be_converted,style)

  这里可以使用的style的值

StyleID                    Style 格式 100 或者0            mon dd yyyy hh:miAM (或者 PM) 101                         mm/dd/yy 102                         yy.mm.dd 103                         dd/mm/yy 104                         dd.mm.yy 105                         dd-mm-yy 106                         dd mon yy 107                         Mon dd, yy 108                         hh:mm:ss 109 或者 9          mon dd yyyy hh:mi:ss:mmmAM(或者 PM) 110                         mm-dd-yy 111                         yy/mm/dd 112                         yymmdd 113 或者 13           dd mon yyyy hh:mm:ss:mmm(24h) 114                       hh:mi:ss:mmm(24h) 120 或者 20             yyyy-mm-dd hh:mi:ss(24h) 121 或者 21             yyyy-mm-dd hh:mi:ss.mmm(24h) 126                    yyyy-mm-ddThh:mm:ss.mmm(没有空格) 130                    dd mon yyyy hh:mi:ss:mmmAM 131                    dd/mm/yy hh:mi:ss:mmmAM 

  使用举例:(把当前日期转换为不同的格式)

CONVERT(varchar(24),GETDATE(),100)//显示为
 06 19 2014 11:00PM 

这里需要注意:

当对datetime等时间类型的数据进行转换时,可以使用适当的长度的char或varchar数据类型获取需要的日期部分.