是否可以在T-SQL中使用一组设置2个变量

时间:2014-05-14 08:46:41

标签: sql-server-2012

早上好堆栈溢出。

在我的一个存储过程的顶部,我有两个变量用于我使用的日期。 @StartDate 是当天的开始, @EndDate 是当天的当前时间。

DECLARE @StartDate DATE
DECLARE @EndDate DATETIME

SET @StartDate = GETDATE()
SET @EndDate = GETDATE()

PRINT @StartDate
PRINT @EndDate

我想知道是否可以在同一行中将 @StartDate @EndDate 设置为 GETDATE()

谢谢

2 个答案:

答案 0 :(得分:3)

我会让你摆脱痛苦:不,你不能。我猜这里要么你想要两个变量完全相同(消除两次调用GETDATE()返回不同值的可能性,无论多么小),或者你只想要更少的函数调用。 SQL Server不支持

之类的语法
SET @StartDate = @EndDate = GETDATE()

这甚至撇开了从DATETIMEDATE的隐含缩小(althoguh,这不是一个真正的问题)。你能做的最好的就是

SET @StartDate = GETDATE()
SET @EndDate = @StartDate

除非您只想保存一行,否则您可以用逗号分隔@Variable = GETDATE()来电并仅使用一个SELECT

修改

忘记添加这个例子 - 因此可以减少到一行:

SELECT @EndDate = GETDATE(), @StartDate = @EndDate

答案 1 :(得分:2)

SET一次只能分配一个变量,但SELECT多个。

这就是你想要的:

SELECT @StartDate = GETDATE(), @EndDate = GETDATE()