输入日期2006-4-2 2:55:44如果是最近2天,就得到'今天 2:55:44','昨天 2:55:44'
如果是以前一周以内的日期就得到'本周一 2:55:44'  或者 '上周五 2:55:44'
如果超过一周就显示实际内容。而且要求中英双语版。头晕了。 谢谢!

解决方案 »

  1.   

    create view v1 as select getdate() as dates
    gocreate function f_getInfo(@date datetime)
    returns varchar(20)
    as
    begin
        declare @ret varchar(20),@wk int,@dw varchar(2)
        
        select 
            @wk=datediff(wk,@date,dates),
            @dw=case datepart(dw,@date) 
                  when 1 then '一'
                  when 2 then '二'
                  when 3 then '三'
                  when 4 then '四'
                  when 5 then '五'
                  when 6 then '六'
                  when 7 then '日'
                end
        from v1
          
        if(@wk)=0
            set @ret='本周'+@dw+convert(char(8),@date,108)
        else if(@wk)=1
            set @ret='上周'+@dw+convert(char(8),@date,108)
        else
            set @ret=convert(varchar(20),@date,120)
        
        return @ret
    end
    goset datefirst 1
    select dbo.f_getInfo(getdate()-10)
    godrop view v1
    drop function f_getinfo
    go
      

  2.   


    @date1  是你输入的日期  @date2 当前日期
    alter function getdate1(@date1 datetime ,@date2 datetime)
    returns varchar
    as
    begin 
    declare @s varchar(8000)  if datediff(dd,@date2,@date1) < 2
         begin 
          select @s = '今天' + convert(varchar(8),@date1,108) + '昨天' + convert(varchar(8),@date1,108)
         end
         else if (datepart(wk,@date2) - datepart(wk,@date1)) = 1
         begin 
            select @s = '..........'
           end 
         else
           begin 
            select @s = convert(varchar(20) ,@date2,120)
           endreturn @send
      

  3.   

    libin_ftsafe(子陌红尘) 给出了
    以下很早写的日期函数 仅供参考。create  FUNCTION dbo.func_getweekmonday
    (@now datetime)
    RETURNS varchar(10)
    AS
    BEGIN
    declare @weekstartdate datetime
    set @weekstartdate = dateadd(day,1-datepart(weekday,@now),@now)
    set @weekstartdate = dateadd(day, 1, @weekstartdate)
    return dbo.func_getdate(@weekstartdate)
    ENDREATE FUNCTION dbo.func_getdate 
    (@date datetime)
    RETURNS varchar(10)
    AS
    BEGIN
    declare @y varchar(4)
    declare @m varchar(2)
    declare @d varchar(2)
    declare @dt varchar(10) set @y = convert(varchar(4),year(@date))
    set @m = convert(varchar(2),month(@date))
    set @d = convert(varchar(2),day(@date))
    set @dt = @m + '/' + @d + '/' + @y
    if @dt = '1/1/1900' 
    set @dt = ''
    if @dt = '01/01/1900'
    set @dt = ''
    if @dt = '12/31/9999'
    set @dt = ''
    return @dt
    ENDREATE FUNCTION dbo.func_getweekenddate
    (@now datetime)
    RETURNS varchar(10)
    AS
    BEGIN
    declare @weekenddate datetime
    set @weekenddate = dateadd(day,7-datepart(weekday,@now),@now)
    return dbo.func_getdate(@weekenddate)
    END