我正在创建一个函数,我提供3个输入@FiscalYEar,@ StartDate,@ EndDate,我还声明一个DATE参数,年份将是@FiscalYear的-1
SET @fyLowerBound = OCT 1 OF (@FiscalYear - 1)
如何正确编写SET语句以使其正常工作?
答案 0 :(得分:1)
这应该有效:
DECLARE @FiscalYear INT = 2014,
@fyLowerBound DATE;
SET @fyLowerBound = CAST(CAST((@FiscalYear - 1) AS CHAR(4)) + '1001' AS DATE)
SELECT @fyLowerBound;
这是2013年10月1日。
前提是以yyyyMMdd
格式创建字符串日期,在SQL Server中这是DATETIME唯一的文化不敏感日期(yyyy-MM-dd适用于DATE),然后将该字符串转换为日期(或日期时间,无论您的偏好)。
因此,第一步是将整数日期转换为CHAR(4)
,然后您可以通过连接'1001'
创建今年10月1日。您现在有一个将转换为日期的字符串。
答案 1 :(得分:0)
SET @fyLowerBound = DATEADD(yy, -1, @FiscalYear)
这将为您提供比@FiscalYear少一年的日期。虽然我不完全确定这是你所需要的,但在你原来的陈述中给出了'OCT'。