各位大哥,帮帮忙吧!
我数据库存的是以VARCHAR 19880805 的格式存的 现在我想计算该人的年龄该怎么做?
提示下怎么将这个VARCHAR类型的转换为日期类型也行

解决方案 »

  1.   

    cast('19880805' as datetime)
      

  2.   

    select datediff(yy,cast('19880805' as datetime),getdate())
    /*
                
    ----------- 
    21(所影响的行数为 1 行)
    */
      

  3.   

    select 年龄=datediff(yy,'19880805', getdate())/**
    年龄          
    ----------- 
    21(所影响的行数为 1 行)
    **/
      

  4.   

    SELECT DATEDIFF(YY,STUFF(STUFF('19880805',5,0,'-'),8,0,'-'),GETDATE()) AS 年齡
    /*年齡          
    ----------- 
    21(影響 1 個資料列)
    */
      

  5.   

    或者不用转换:select datediff(yy,'19880805',getdate())
    /*
                
    ----------- 
    21(所影响的行数为 1 行)
    */
      

  6.   

    --'19880805'是合法日期格式,让系统自己做隐式转换即可。
    select datediff(yy,'19880805',getdate())
    /*
    21
    */
      

  7.   

    select datediff( yy,cast('19880805' as datetime),GETDATE())
      

  8.   

    先结帖 要问的问题倒是有了结果 我忘说了 自己用的数据库是SQLSERVER 没有GETDATE()方法 所以时间差那个函数也就用不着
    我用了CAST 可是还是有个问题(now()-CAST('19880805' as datetime))/(365*24*60*60*1000) 
    输出的却是637.06326432528我这样计算有问题吗?我的理解是两个日期相减得到得差值应该是个长整形的毫秒数 这个毫秒数/每年的毫秒数=年数