从今天的月份+ 6返回记录

时间:2018-05-04 13:33:42

标签: oracle filtering

如何从今天+ 6个月返回唱片销售。

示例:

今天的月份:2018年5月。 今天的月份+ 6:2018年11月

所以,我想要一个函数从11月(1到30)检索Table_Date中的记录。

感谢。

2 个答案:

答案 0 :(得分:2)

使用TRUNCADD_MONTHS功能:

SELECT *
FROM   sales
WHERE  SalesDate >= ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), 6 )
AND    SalesDate <  ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), 7 );

答案 1 :(得分:0)

你有SQL服务器和oracle,它们都不能。

这适用于SQL Server(虽然逻辑可以在ORACLE中使用,但语法可能不起作用)

这是从今天起6个月     SELECT DATEADD(MM,6,GETDATE())

在查看更多问题之后,在此处添加了额外的代码以获取更多详细信息:

我使用变量进行计算以使其更易于理解,但您可以全部内联(但更难阅读)。

这个脚本从现在起6个月后得到一个日期,在那个月找到该月的第一天,然后找到那个月的最后一天,这样你就可以在where子句逻辑中使用这两个日期。

DECLARE @NewMonth AS VARCHAR(10)
DECLARE @NewYear AS VARCHAR(10) -- in case adding months goes to next year
SELECT @NewMonth  = DATEPART(MONTH, DATEADD(MM, 6, GETDATE())),
@NewYear = DATEPART(YEAR, DATEADD(MM, 6, GETDATE()))

DECLARE @FirstOfMonth AS DATE = @NewMonth + '/1/' + @NewYear

-- for start of month check we can just hard code one in it, for end of month we cant because we dont know how many days are in it
SELECT @FirstOfMonth, DATEADD(DAY, -1, DATEADD(MONTH, 1, @FirstOfMonth)) AS LastDayOfMontbh