类似“2006年8月15日”这样在sqlsever数据库以字符串方式存放,请问如何把他在查询的时候转换成日期型。譬如查询所有2006年6月3日以前的该怎么写?

解决方案 »

  1.   

    select convert(datetime,replace(replace(replace('2006年8月15日','年','-'),'月','-'),'日',''))
      

  2.   

    直接比较不行吗?
    select * from 表 where 字段<'2006年6月3'

    select * from 表 where cast(replace(replace(replace('2006年8月15日','年','-'),'月','-'),'日','') as datetime)<'2006-6-3'
      

  3.   

    zsforever(虎虎) ( ) 信誉:100    Blog   加为好友  2007-04-10 11:53:51  得分: 0  
     
     
       select convert(datetime,replace(replace(replace('2006年8月15日','年','-'),'月','-'),'日',''))
      
     
    这个好.
      

  4.   

    显示成“2006/11/1”是你数据默认日期显示方式的问题,想改变可以用convert(varchar(10),datecolumn,120)来改变declare @s varchar(16)
    set @s = '2006年8月15日'
    select convert(datetime,case when isdate(replace(replace(replace(@s,'年','-'),'月','-'),'日',''))=1 then replace(replace(replace(@s,'年','-'),'月','-'),'日','') else '' end )