varchar数据类型转换成datetime数据类型

ffg_alin 2006-11-07 02:07:05
declare @sql varchar(8000)
if exists (select object_id('temp_grcl'))
drop table temp_grcl
select @sql = 'select a.scph,a.cpdm,a.kh,a.jtdm,a.scsl,a.hgs,a.fps,a.rq,a.bz,
b.xm,c.gxmc,d.bz as hzxx,d.mc+''-''+d.dy+''-''+d.swsbsrl+''-''+d.djdm+''-''+d.jj+''-''+d.ts as gg,
d.mkts,d.mtzs,a.hgs/d.mkts/d.mtzs as hgks,f.fz,
case when c.gxmc = ''组装'' then case when d.mc like ''cl23b%'' then case when d.bz = ''3.5*7.5*7.2'' or d.bz = ''2.5*6.5*7.2'' then cast(a.hgs/44000.00 as dec(10,3))
when d.bz = ''4.5*9.5*7.2'' or d.bz = ''5.0*10*7.2'' then cast(a.hgs/34000.00 as dec(10,3))
when d.bz = ''6.0*11*7.2'' then cast(a.hgs/30000.00 as dec(10,3)) end
when d.mc = ''cl25'' then cast(a.hgs/30000.00 as dec(10,3)) end
when c.gxmc = ''卷绕'' then a.hgs/d.mkts/d.mtzs*f.fz
end as wcgs

into temp_grcl
from grscqk a
left outer join zy b on a.kh = b.kh
left outer join cpjbzl d on a.cpdm = d.cpdm
left outer join jtdm e on a.jtdm = e.jtdm
left outer join gxdm c on c.gxdm = e.ssgxdm
left outer join jtlxdm g on g.jtlxdm = e.jtlxdm
left outer join #fzb f on f.cpdm = substring(d.cpdm,1,4) and f.dy = d.dy and f.swsbsrl = d.swsbsrl and f.jtlxdm = e.jtlxdm
' + @aa
exec(@sql)
这是存储过程中的一句话,
在这段话中参数@aa = 'where rq between ''2006-09-01'' and ''2006-09-30'' and c.gxmc = ''卷绕'''
出现varchar转换成datetime时错误,请问这个要怎么处理呢???
...全文
561 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2006-11-07
  • 打赏
  • 举报
回复
CAST(rq AS datetime)
allright_flash 2006-11-07
  • 打赏
  • 举报
回复
convert
cast
marco08 2006-11-07
  • 打赏
  • 举报
回复
用 cast()或convert() 轉換
yangys 2006-11-07
  • 打赏
  • 举报
回复
输出你sql语句,看是否这样:where rq between '2006-09-01' and '2006-09-30'

这样执行是没有问题的.要么你加cast或convert进行转换.
hellowork 2006-11-07
  • 打赏
  • 举报
回复
把@aa的内容改成:
@aa = 'where CAST(rq AS datetime) between ''2006-09-01'' and ''2006-09-30'' and c.gxmc = ''卷绕'''
即CAST(rq AS datetime)

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧