从sybase ase获得去年的最后一天

时间:2016-06-07 08:22:42

标签: sybase sybase-ase sybase-iq

我需要将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)

3 个答案:

答案 0 :(得分: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 char格式中的期望日期。下一步将其转换为date,datetime或smalldatetime。 @ dec31存储结果。

答案 1 :(得分:0)

选择转换(datetime,convert(varchar,datepart(year,getdate()) - 1)+' / 12' +' / 31')

2015年12月31日12:00 AM

答案 2 :(得分:0)

SELECT      DATEADD(DD,-1,DATEADD(YEAR, DATEDIFF(YEAR, '', GETDATE())+1, ''))