我试图获取一个select语句,它给出了特定日期值之间的值。但由于上述错误,我无法完成这一步。
我在下面创建了一个示例代码,用于复制错误。
有解决方案吗?
BEGIN
DECLARE @OutputTimeDimensionvalue AS VARCHAR (60)
SET @OutputTimeDimensionvalue = '2006-onward'
CREATE TABLE #TEMP1
(
Timevalue int,
TimedimensionDate date
)
INSERT INTO #TEMP1 VALUES (23,'2007-04-01'),(28,'2008-01-01'),(45,'2012-04-01')
select Timevalue from #TEMP1 where TimedimensionDate BETWEEN CONVERT(datetime,LEFT(@OutputTimeDimensionvalue, 4)+'-01-01') AND
CONVERT(datetime,RIGHT(@OutputTimeDimensionvalue, 4)+'-01-01')
DROP TABLE #TEMP1
END
答案 0 :(得分:1)
您必须使用LEFT
代替RIGHT
才能获得年份:
SELECT Timevalue
FROM #TEMP1
WHERE
TimedimensionDate BETWEEN
CONVERT(DATETIME, LEFT(@OutputTimeDimensionvalue, 4) + '-01-01')
AND CONVERT(DATETIME, LEFT(@OutputTimeDimensionvalue, 4) + '-01-01')
但是,我建议改为使用DATE
类型,然后使用>=
和<
进行比较:
DECLARE @OutputTimeDimensionvalue AS DATE = '20060101'
SELECT Timevalue
FROM #TEMP1
WHERE
TimedimensionDate >= @OutputTimeDimensionvalue
TimedimensionDate < DATEADD(YEAR, 1, @OutputTimeDimensionvalue)
以上内容将在2016年为您提供TimeValues
。