早上好堆栈溢出。
在我的一个存储过程的顶部,我有两个变量用于我使用的日期。 @StartDate 是当天的开始, @EndDate 是当天的当前时间。
DECLARE @StartDate DATE
DECLARE @EndDate DATETIME
SET @StartDate = GETDATE()
SET @EndDate = GETDATE()
PRINT @StartDate
PRINT @EndDate
我想知道是否可以在同一行中将 @StartDate 和 @EndDate 设置为 GETDATE()?
谢谢
答案 0 :(得分:3)
我会让你摆脱痛苦:不,你不能。我猜这里要么你想要两个变量完全相同(消除两次调用GETDATE()
返回不同值的可能性,无论多么小),或者你只想要更少的函数调用。 SQL Server不支持
SET @StartDate = @EndDate = GETDATE()
这甚至撇开了从DATETIME
到DATE
的隐含缩小(althoguh,这不是一个真正的问题)。你能做的最好的就是
SET @StartDate = GETDATE()
SET @EndDate = @StartDate
除非您只想保存一行,否则您可以用逗号分隔@Variable = GETDATE()
来电并仅使用一个SELECT
。
忘记添加这个例子 - 因此可以减少到一行:
SELECT @EndDate = GETDATE(), @StartDate = @EndDate
答案 1 :(得分:2)
SET一次只能分配一个变量,但SELECT多个。
这就是你想要的:
SELECT @StartDate = GETDATE(), @EndDate = GETDATE()