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函数*****
等中!~!~!~!~!~!~!~!~!~!~!~!~!~!~
这个是一条我正常用的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函数*****
等中!~!~!~!~!~!~!~!~!~!~!~!~!~!~
count(czp.xx) as line,
count(distinct czp.czpid) as xc
from czp,czplb
where 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))>=convert(datetime,'"+year1+"'+'"+yue1+"'+'-'+'"+ri1+"'+' '+'"+shi1+"'+':'+'"+fen1+"')
看可不可以呢???
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
这里的year1....是什么东西?
各位,我在测试下你们的语句
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
select right(czplb.czpid,4) from czplb
检查是否有非法的年份
from czplb
--如果这个串是合法的数据,那么加上转换也不应该报错
from czplb
--如果这个串是合法的数据,那么加上转换也不应该报错
这样就好用
加上convert(datetime,) 就报这个错误:
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
from czplb
这里的数据有的数据不能转换为日期型
我开始的语句可以运行,就是年的位置不一样
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+"')
from czplb
这样就能运行,那样的话,错误就是zx_mon,zx_day,即
convert(char(2),czplb.zx_mon)+'-'+convert(char(2),czplb.zx_day)
其中zx_mon中是月,有1,2,3,4,5,6,7,8,9,10,11,12
是不是有时候是一位(如1),有时候是2位(如10),就有错误
我发现了,我的数据里确实有一条数据的月是0,但是就一条(一共几千条数据,我一条一条看的),那该怎么办呀?
from czplb
where zx_mon=0
select count(czp.xx) as line,count(distinct czp.czpid) as xc from czp,czplb where convert(datetime,left(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,'2007-'+'02-'+'11'+' '+'11'+':'+'11')
然后我用到JSP程序里是这样的:
select count(czp.xx) as line,count(distinct czp.czpid) as xc from czp,czplb where convert(datetime,left(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+"')
其中year1,yue1,ri1,shi1,fen1,就是上个页面传过来的参数,年,月日,时分
请帮我看看怎么回事