我需要将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)
答案 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, ''))