我试图从查询中获得前六个月的数据。
,即我必须在过去的第六个月进行分组。
假设当前月份是6月,那么我只想要1月份的数据&我也不希望除了一月以外的所有上个月
任何人都可以帮我这个
SELECT
so_date
FROM
RS_Sells_Invoice_Info_Master SIIM
LEFT OUTER JOIN
RS_Sell_Order_Master AS SM ON SM.sell_order_no = SIIM.sell_order_no
LEFT OUTER JOIN
RS_Sell_Order_Mapping AS SOM ON SOM.sell_order_no = SIIM.sell_order_no AND SIIM.product_id = SOM.product_id
LEFT OUTER JOIN
RS_Inventory_Master AS IM ON IM.product_id = SIIM.product_id
where
so_date between CAST(DATEADD(month, DATEDIFF(month, 0, so_date)-5, 0)AS DATE) and CAST(DATEADD(month, DATEDIFF(month, 0, so_date)-4, 0)AS DATE)
答案 0 :(得分:1)
假设当前月份是6月,那么我只想要1月份的数据
这样可行
WHERE
so_date >= DATEADD(mm, -6, LEFT(CONVERT(VARCHAR, GETDATE(), 120), 8) + '01')
AND
so_date < DATEADD(mm, -5, LEFT(CONVERT(VARCHAR, GETDATE(), 120), 8) + '01')
LEFT(CONVERT(VARCHAR, GETDATE(), 120), 8) + '01'
以YYYY-MM-DD
格式为您提供当月的开头。剩下的就是直截了当。
答案 1 :(得分:0)
要获取特定月份(6个月前)的所有数据,请使用以下where子句, 您需要比较月份和年份,以确保您获得正确的月份,即当前月份是否是您想要的12月份。“
where
datepart(Month, [so_date]) = datepart(Month, dateadd(month, -6,getdate()))
and
datepart(Year, [so_date]) = datepart(year, dateadd(month, -6,getdate()))
答案 2 :(得分:0)
请查看示例,使用 DateAdd 功能减去六个月并与之间功能进行比较
Declare @t table (name varchar(50), createddate datetime)
Insert into @t values('ajay', GETDATE()-50 ),('ajay1', '2014-03-10' ),('ajay2', '2013-12-09' ),('ajay3', '2013-11-10' )
declare @currentdate datetime = getdate() , @sixmontholddate datetime = dateadd( MONTH, -6,getdate())
select @currentdate , @sixmontholddate
select * from @t
select * from @t where createddate between dateadd( MONTH, -6,getdate()) and GETDATE()