如何正确编写SET DATE

时间:2014-05-09 15:54:06

标签: sql sql-server-2008

我正在创建一个函数,我提供3个输入@FiscalYEar,@ StartDate,@ EndDate,我还声明一个DATE参数,年份将是@FiscalYear的-1

SET @fyLowerBound = OCT 1 OF (@FiscalYear - 1)

如何正确编写SET语句以使其正常工作?

2 个答案:

答案 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'。