2016-06-07 36 views
0

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

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

回答

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” 被concatenaded成“ 20151231“,这是AAAAMMDD字符格式中的所需日期。下一步将其转换为日期,日期时间或smalldatetime。 @ dec31存储结果。

0

选择转换(日期时间,转换(VARCHAR,日期部分(年,GETDATE()) - 1)+ '/ 12' + '/ 31')


2015年12月31日上午12时00

相关问题