日期:2014-05-19  浏览次数:20521 次

求一条SQL语句**关于字符串**
select   count(czp.xx)   as   line,count(distinct   czp.czpid)   as   xc   from   czp,czplb   where   convert(datetime, '2006- '+convert(char(2),czplb.js_mon)+ '- '+convert(char(2),czplb.js_day)+ '   '+convert(char(2),czplb.js_hour)+ ': '+convert(char(2),czplb.js_min))> =convert(datetime, ' "+year1+ " '+ ' "+yue1+ " '+ '- '+ ' "+ri1+ " '+ '   '+ ' "+shi1+ " '+ ': '+ ' "+fen1+ " ')
这个是一条我正常用的SQL语句,其中的2006是我固定写的,也就是2006年都好用,现在已经2007年了,所以那里就应该换成数据库中的czpid中的前四位,我这样改的:
select   count(czp.xx)   as   line,count(distinct   czp.czpid)   as   xc   from   czp,czplb   where   convert(datetime,convert(char(4),right(czplb.czpid,4))+ '- '+convert(char(2),czplb.zx_mon)+ '- '+convert(char(2),czplb.zx_day)+ '   '+convert(char(2),czplb.zx_hour)+ ': '+convert(char(2),czplb.zx_min))> =convert(datetime, ' "+year1+ " '+ ' "+yue1+ " '+ '- '+ ' "+ri1+ " '+ '   '+ ' "+shi1+ " '+ ': '+ ' "+fen1+ " ')  
这样改过之有一运行就报错:datetime   错误!
请帮忙!!!!!!!!!!!!!
****重点是就取出数据库中一列数据的前四位,完成datetime函数*****
等中!~!~!~!~!~!~!~!~!~!~!~!~!~!~

------解决方案--------------------
select count(czp.xx) as line,count(distinct czp.czpid) as xc from czp,czplb where convert(datetime,convert(char(4),right(czplb.czpid,4))+ '- '+convert(char(2),czplb.zx_mon)+ '- '+convert(char(2),czplb.zx_day)+ ' '+convert(char(2),czplb.zx_hour)+ ': '+convert(char(2),czplb.zx_min))> =convert(datetime, ' "+year1+ " '+ '- '+ ' "+yue1+ " '+ '- '+ ' "+ri1+ " '+ ' '+ ' "+shi1+ " '+ ': '+ ' "+fen1+ " ')


看可不可以呢???

------解决方案--------------------
select count(czp.xx) as line,count(distinct czp.czpid) as xc from czp,czplb
where cast(right(czplb.czpid,4)+ '- '+cast(czplb.js_mon as varchar)+ '- '+cast(czplb.js_day as varchar)+ ' '+cast(czplb.js_hour as varchar)+ ': '+cast(czplb.js_min as varchar) as datetime)> =convert(datetime, ' "+year1+ " '+ ' "+yue1+ " '+ '- '+ ' "+ri1+ " '+ ' '+ ' "+shi1+ " '+ ': '+ ' "+fen1+ " ')

------解决方案--------------------
先试试如下语句是否有问题:


select convert(datetime,right(czplb.czpid,4)+ '- '+convert(char(2),czplb.zx_mon)+ '- '+convert(char(2),czplb.zx_day)+ ' '+convert(char(2),czplb.zx_hour)+ ': '+convert(char(2),czplb.zx_min))
from czplb