今天在群里看到有人提问 怎么实现如下图的功能,很明显,如果我们手工插的话,费时费力,那何不来个循环判断插入了,这使我想起了 while 语句
说做就做 于是 写出了 下面的代码:
    create table rq 
    
    (dt datetime , 
    
     wb varchar(5) 
    
    ) 
  
    declare @dt datetime 
    
    declare @n int 
  
    set @dt='2011-12-1' 
    
    set @n=0 
  
while @n<10 begin -----看情况修改10这个数据
    insert into rq select  dateadd(d,@n,@dt),23),'上午' 
    
    insert into rq select  dateadd(d,@n,@dt),23),'下午' 
  
set @n=@n+1
end
但是问题出来了,执行完全没有问题,但是dt 一列怎么全部是 为datetime格式了 也就是 日期后面 还跟了一堆0,
我直接用CONVERT(varchar(12),dateadd(d,@n,@dt),23)函数去转换,但是无论如何转换,插入后的值永远是后面带一堆0的
那叫一个纳闷了,后来我关注到了数据类型上 原理datetime数据类型就是这样带0的 ,呵呵
找到症状了 ,对症下药,就把 dt列的 数据类型 换为了 varchar(12) 完美解决,没有0了。
    create table rq 
    
    (dt varchar(12) , 
    
     wb varchar(5) 
    
    ) 
  
    declare @dt datetime 
    
    declare @n int 
  
    set @dt='2011-12-1' 
    
    set @n=0 
  
while @n<10 begin
    insert into rq select dateadd(d,@n,@dt),'上午' 
    
    insert into rq select dateadd(d,@n,@dt),'下午' 
  
set @n=@n+1
end
写的不好,多多包涵,欢迎指教。


 
     
					 
					