如何从今天+ 6个月返回唱片销售。
示例:
今天的月份:2018年5月。 今天的月份+ 6:2018年11月
所以,我想要一个函数从11月(1到30)检索Table_Date中的记录。
感谢。
答案 0 :(得分:2)
使用TRUNC
和ADD_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