【问题标题】:get last day of previous year from sybase ase从 sybase ase 获取上一年的最后一天
【发布时间】:2016-10-07 01:07:36
【问题描述】:

我需要将 where 条件设置为上一年的最后一个日期。 我正在寻找使用 dateadd 函数的解决方案,但我无法弄清楚。这段代码给了我当月的最后一天。但是如何获得去年 12 月的最后一天 '2015-12-31' 已经尝试了不同的方法,但这一切都给了我奇怪的结果。

declare @today datetime
select @today=getdate()
select convert(varchar(10), dateadd(dd, -day(dateadd(mm, 1, @today)),dateadd(mm, 1, @today)),101)

【问题讨论】:

    标签: sybase sap-ase sap-iq


    【解决方案1】:

    假设 Sybase ASE,而不是 ASA 或 IQ:

    declare @lastyear smallint, @dec31 datetime
    select @lastyear = datepart(year,getdate()) - 1
    select @dec31 = convert(datetime, convert(char(4), @lastyear) + "1231")
    select @dec31
    

    这会产生

     --------------------------
            Dec 31 2015 12:00AM
    

    @lastyear 包含 2015 年,即最后一年,然后将文本“2015”连接成“20151231”,这是 AAAAMMDD 字符格式的所需日期。下一步将其转换为日期、日期时间或小日期时间。 @dec31 存储该结果。

    【讨论】:

      【解决方案2】:

      select convert(datetime, convert(varchar, datepart(year, getdate()) - 1 ) + '/12' + '/31')


      2015 年 12 月 31 日上午 12:00

      【讨论】:

        【解决方案3】:
        SELECT      DATEADD(DD,-1,DATEADD(YEAR, DATEDIFF(YEAR, '', GETDATE())+1, '')) 
        

        【讨论】:

        • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的答案添加解释并说明适用的限制和假设。
        猜你喜欢
        • 2022-07-22
        • 1970-01-01
        • 2017-08-19
        • 2020-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-25
        相关资源
        最近更新 更多