【发布时间】:2021-06-03 09:31:36
【问题描述】:
在 SQL Server 中,以下代码为我提供了从今天开始的上周星期日的日期:
DECLARE @dt date = GETDATE();
SELECT dateadd(week,datediff(week,6,@dt),6);
我需要从给定的日期声明一个变量并将该变量设为整数。我试过这样的事情:
DECLARE @last_sunday INT;
SELECT dateadd(week,datediff(week,6,@dt),6) INTO @last_sunday FROM xxx;
但问题是我不明白我应该在FROM之后写哪个表。在我的解释中:
dateadd(week,datediff(week,6,@dt),6)
是某种计算,而不是从数据表中收集值。如何将上周日的日期转换为整数变量?
【问题讨论】:
-
只是
declare @last_sunday int = dateadd(...);。如果没有表,为什么要包含一个?? -
sql server 不需要
FROM -
当您实际上并未从任何表中进行选择时,您的问题似乎出在使用
select上。只需使用declare @last_sunday int = foo()或单独声明然后set @last_sunday = foo()。 -
SELECT...INTO也不适用于变量。SELECT...INTO使用数据集的定义创建一个表,然后将该数据插入到所述新表中。你不是CREATE一个(表类型)变量,你DECLARE它。它肯定不适用于标量变量。
标签: sql sql-server variables declare