先在程序里处理一下那个LastPost,你那个字段应该是以$分割的吧,用字符串函数取得2005-11-29 16:20:08,再执行SQL

解决方案 »

  1.   

    declare @t varchar(800)
    set @t='psn$169$2005-11-29 16:20:08$sfasdf/test[align=...$$3$136$25'
    set @t=substring(@t,9,19)
    select @t
      

  2.   

    楼上的兄弟,psn$169$这个长度不是固定的,所以你这样是错的,应该要先找到第二$的位置就可以了,有没有哪位大虾知道怎么写啊!好急啊!
      

  3.   

    order by cast(substring(@str,charindex('-',@str,1)-4,19) as datetime) desc
      

  4.   

    order by cast(subString(@t,charindex('-',@t)-4,charindex('-',@t)+6) as datetime) desc
      

  5.   

    终于写出来了,可是大家看看这个语句为什么在sql sever中可以执行,可是在access中却不可以呢.
    SELECT TOP 10 *
    FROM Dv_Topic
    WHERE (BoardID IN (44))
    ORDER BY CAST(SUBSTRING(STUFF(STUFF(LastPost, 1, CHARINDEX('$', LastPost), ''), 1, 
          CHARINDEX('$', STUFF(LastPost, 1, CHARINDEX('$', LastPost), '')), ''), 1, 
          CHARINDEX('$', STUFF(STUFF(LastPost, 1, CHARINDEX('$', LastPost), ''), 1, 
          CHARINDEX('$', STUFF(LastPost, 1, CHARINDEX('$', LastPost), '')), '')) - 1) 
          AS datetime) DESC
      

  6.   

    declare @sql varchar(2000)
    set @sql='psn$169$2005-11-29 16:20:08$sfasdf/test[align=...$$3$136$25'
    select substring(@sql,charindex('$',@sql,charindex('$',@sql)+1)+1,
    charindex('$',@sql,charindex('$',@sql,charindex('$',@sql)+1)+1)-
    charindex('$',@sql,charindex('$',@sql)+1)-1)
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
    2005-11-29 16:20:08(所影响的行数为 1 行)
      

  7.   

    试是可以的,但是再access为什么不可以啊,在sql server中都是可以的。
      

  8.   

    为什么在access中会不能执行,提示substring函数为定义。
      

  9.   

    access  里本身就没有  substring 这个函数
      

  10.   

    在Access中是没有substring函数的。不知你是否了解VBScript,如果了解就好办了。在Access中对字符串的操作类似VBScript的用法,比如有InStr(),Left(),Right(),Mid()等函数.所以你把相应的函数替换一下,应该就可以了。