ISDATE
确定输入表达式是否为有效的日期。语法
ISDATE ( expression ) 参数
expression一个表达式,将要验证它是否为一个日期。expression 是任何返回 varchar 数据类型的表达式。 返回类型
int注释
如果输入表达式是有效的日期,那么 ISDATE 返回 1;否则,返回 0。下表显示一组示例所得到的返回值。查查 select * from k_exch where f_mio_date > '2009-01-01' and isdate(f_mio_date) = 0如果存在数据,则表示日期格式有错
确定输入表达式是否为有效的日期。语法
ISDATE ( expression ) 参数
expression一个表达式,将要验证它是否为一个日期。expression 是任何返回 varchar 数据类型的表达式。 返回类型
int注释
如果输入表达式是有效的日期,那么 ISDATE 返回 1;否则,返回 0。下表显示一组示例所得到的返回值。查查 select * from k_exch where f_mio_date > '2009-01-01' and isdate(f_mio_date) = 0如果存在数据,则表示日期格式有错
我通过cast( as smalldatetime)函数根据条件建立一张视图,例如是"20080101"格式,就利用cast(left(f_miodate,8) as smalldatetime)
而'01 1 2009'这个格式利用cast(f_miodate as smalldatetime)。
将这个字段都转换为时间类型。转换后用isdate()判断视图记录和实际记录是一样的
可是当对视图用刚刚的查询条件进行查询,就报错了。不知道什么原因。
from k_exch
where case when isdate(f_mio_date)=1 then f_mio_date else '1900-1-1' end > '2009-01-01'
case when substring(f_mio_date,3,1)='' then convert(varchar(8),cast(f_mio_date as datetime),112)
else convert(varchar(8),f_mio_date) end as miodate
from k_exch
where miodate between '2009-01-01' and '2009-03-01'
order by sid为什么这条语句会说miodate列名无效呢?