sql 2005服务器
获取上个月的记录
Date product
24-05-2014 ball
25-05-2014 bat
01-06-2014 hat
我需要
Date Product
24-05-2014 ball
25-05-2014 bat
declare @ex datetime
set @ex '06-01-2014'
select * from tabl where DATENAME(m,DATEADD(m,0,Date)) =DATENAME(m, DATEADD(m,0, @ex))- it works
select * from tabl where DATENAME(m,DATEADD(m,0,Date)) =DATENAME(m, DATEADD(m,-1,@ex))-not works
答案 0 :(得分:1)
我的示例代码(2008年测试)。我不知道2005年的YEAR和MOTH功能是否需要使用一些字符串函数从datetime转换为字符串中提取日期/月份部分
declare @ex datetime = '2014-01-01'
declare @prev_year int
declare @prev_month int
set @prev_year = year(dateadd(month, -1, @ex))
set @prev_month = month(dateadd(month, -1, @ex))
select * from tabl
where year(Date) = @prev_year and month(Date) = @prev_month
答案 1 :(得分:0)
您在日期中使用dd-MM-yyyy
格式,这是SQL Server中的varchar
。
因此,您必须使用CONVERT
:
declare @ex varchar(10)
set @ex = '06-01-2014'
SELECT DATENAME(m,DATEADD(m,0,GETDATE())),
DATENAME(m, DATEADD(m,-1,CONVERT(date, @ex, 103)));
这会产生结果:
June | May
我认为你可以从这里找出解决方案。
注意:如果您使用declare @ex datetime
,结果将产生June | December