表里有3个字段分别记录了年月日如下------------------------------------------------
id     OrderYear    OrderMonth   OrderDay
------------------------------------------------
1      2008         2             3
... ...想查某一天以前的日期怎么查,想查出来的记录集中的字段就是datetime型的,我试了下,不行select [Id],Cast([OrderYear]+'-'+[OrderMonth]+'-'+[OrderDay] as datetime) as [OrderTime]结果如下
-------------------------------------
id     OrderTime
-------------------------------------
1      1905-07-07 00:00:00.000
... ...高手指点下哪里错了?

解决方案 »

  1.   

    --你这个是在做加法(当数字了)
    --tryselect [Id],Cast(rtrim([OrderYear])+'-'+rtrim([OrderMonth])+'-'+rtrim([OrderDay]) as datetime) as [OrderTime]
      

  2.   

    成了,Yeah!谢谢,那问问rtrim是什么意思?
      

  3.   

    rtrim(包括ltrim)都是带默认转换功能的,输出值为Varchar,这个是和STR函数相比的优势(输出Char,但是对于小数输出有优势),如果没有特别的格式要求就用这个好了当然你要用Cast或者Convert也可以,但这里就没有必要了
      

  4.   

    str可以转成字符串啊。
    select [Id],Cast(str([OrderYear])+'-'+str([OrderMonth])+'-'+str([OrderDay]) as datetime) as [OrderTime]
    这样也行。
      

  5.   

    好人做到底,试了下,列名无效??
    select [Id],Cast(rtrim([OrderYear])+'-'+rtrim([OrderMonth])+'-'+rtrim([OrderDay]) as datetime) as [OrderTime] where [OrderTime] >= '2006-7-13 19:06:14'服务器: 消息 207,级别 16,状态 3,行 1
    列名 'OverdueTime' 无效。
      

  6.   

    打错了好人做到底,试了下,列名无效??
    select [Id],Cast(rtrim([OrderYear])+'-'+rtrim([OrderMonth])+'-'+rtrim([OrderDay]) as datetime) as [OrderTime] where [OrderTime] >= '2006-7-13 19:06:14'服务器: 消息 207,级别 16,状态 3,行 1
    列名 'OrderTime' 无效。
      

  7.   

    select [Id],Cast(rtrim([OrderYear])+'-'+rtrim([OrderMonth])+'-'+rtrim([OrderDay]) as datetime) as [OrderTime] where Cast(rtrim([OrderYear])+'-'+rtrim([OrderMonth])+'-'+rtrim([OrderDay]) >= '2006-7-13 19:06:14'