SQLServer 将日期改造成标准日期格式(如: 2016/6 ->201606)

同事给了份Excel 数据,导到数据库之后再查出来时发现顺序不好弄。于是想从数据源中做处理。

由于数据存在,年/月 与 年/月/日 的格式不好用datetime保存,于是用varchar保存。

数据处理主要有两点,1,拆分,2,补全

 

下面是拆分代码

create  function  [dbo].[SplitIn](@c   varchar(max),@split   varchar(2))   
returns   @t   table(col   varchar(400))
as   
begin    
  while(charindex(@split,@c)<>0)   
    begin   
      insert   @t(col)   values   (substring(@c,1,charindex(@split,@c)-1))   
      set   @c   =   stuff(@c,1,charindex(@split,@c),'')   
    end   
  insert   @t(col)   values   (@c)   
  return   
end  

 

补全我是用了  REPLICATE 函数

DECLARE @Result nvarchar(max)
	set @Result=''
	select  @Result=@Result+isnull(REPLICATE('0',2-len(col)),'')+cast(col as varchar) from SplitIn('2015/1','/')
	
	select @Result
	

  

  结果如下:

 

自己把第二段sql封成函数,就可以在sql语句中调用了..

 

posted on 2016-06-01 15:53  我叫宋  阅读(1864)  评论(0编辑  收藏  举报

导航