我Access里有个字段为string的,保存日期的缩写形式,比如20080201为2008年2月1日,20090309为2009年3月9日,问下,SQL语句如何把这个字符串格式的日期转换成日期格式的日期啊。

解决方案 »

  1.   

    SELECT STUFF(STUFF('20080201',5,0,'年'),8,0,'月')+'日'
    /*-------------- 
    2008年02月01日(影響 1 個資料列)
    */
      

  2.   

    在access中转?还是SQL SERVER中?如果是sql server中select left('20080201' ,4) + '年' + 
           substring('20080201' ,5,2) + '月' + 
           substring('20080201' ,7,2) + '日'
    /*
                           
    ---------------------- 
    2008年02月01日(所影响的行数为 1 行)*/
      

  3.   

    select left('20080201' ,4) + '年' + 
           Mid('20080201' ,5,2) + '月' + 
           Mid('20080201' ,7,2) + '日'
    -----------------------------------------------
      

  4.   

    在SQL Server中我们可以用Substring(string,start,length)函数来实现字符串截取功能(其中string代表要截取的字符串,start参数表示截取开始的位置,length参数表示截取的字符个数),但是Access却不支持这个函数。在Access中用Mid(string,start,length)和Midb(string,start,length)来实现这个功能。用mid()函数。  
        
      Mid  函数  
                    
        
      返回  Variant  (String),其中包含字符串中指定数量的字符。  
        
      语法  
        
      Mid(string,  start[,  length])  
        
      Mid  函数的语法具有下面的命名参数:  
        
      部分  说明    
      string  必要参数。字符串表达式,从中返回字符。如果  string  包含  Null,将返回  Null。    
      start  必要参数。为  Long。string  中被取出部分的字符位置。如果  start  超过  string  的字符数,Mid  返回零长度字符串  ("")。    
      length  可选参数;为  Variant  (Long)。要返回的字符数。如果省略或  length  超过文本的字符数(包括  start  处的字符),将返回字符串中从  start  到尾端的所有字符。    
        
        
        
      说明  
        
      欲知  string  的字符数,可用  Len  函数。  
        
      注意  MidB  函数作用于字符串中包含的字节数据,如同在双字节字符集(DBCS)语言中一样。因此其参数指定的是字节数,而不是字符数。对于使用  MidB的示例代码,请参阅示例主题中的第二个示例。  需要说明的是:如果从字符串头开始截取的话,第一个参数应该是1而不是0,虽然在SQL Server中以0或者1作为起始位置参数没有问题,但是在Access中只能以1作为起始参数,否则出现乱码。