try:
cast((cast(date_y as varchar) + '-' + cast(date_m as varchar) + '-' + cast(date_das varchar)) as datetime)

解决方案 »

  1.   

    declare @date_y int
    declare @date_m int
    declare @date_d intset @date_y=2006
    set @date_m=1
    set @date_d=15select cast((cast(@date_y as varchar) + '-' + cast(@date_m as varchar) + '-' + cast(@date_d as  varchar)) as datetime)
      

  2.   

    cast(convert(varchar(4),date_y)+'-'+convert(varchar(2),date_m)+'-'+convert(varchar(2),date_d) as datetime)
      

  3.   

    /*
    功能:输入年月日,返回日期
    */
    create function dbo.fn_GetDate (@y int ,@m int, @d int)
    returns smalldatetime 
    with encryption
    as  
    begin 
    return 
    cast(cast(@y as varchar(4)) + right('00' + cast(@m as varchar(2)),2)  + right('00' + cast(@d as varchar(2)),2) as smalldatetime)
    end
    goselect dbo.fn_GetDate(2005,10,3)/*
    返回:2005-10-03 00:00:00*/select * 
    from 表名
    where dbo.fn_GetDate(date_y, date_m, date_d) >'2006-01'
      

  4.   

    --未加密的函数/*
    功能:输入年月日,返回日期
    */
    create function dbo.fn_GetDate (@y int ,@m int, @d int)
    returns smalldatetime 
    --with encryption
    as  
    begin 
    return 
    cast(cast(@y as varchar(4)) + right('00' + cast(@m as varchar(2)),2) + right('00' + cast(@d as varchar(2)),2) as smalldatetime)
    end
    goselect dbo.fn_GetDate(2005,10,3)/*
    返回:2005-10-03 00:00:00*/select * 
    from 表名
    where dbo.fn_GetDate(date_y, date_m, date_d) >'2006-01'