只是想知道我是否错过了DATEADD和变量非常简单的东西,我确信必须有一种更优雅的方式来做我想做的事。
我目前有一堆高谈阔论,但作为其中的一部分,我有
DECLARE @EndDate date
SET @EndDate = '2016-02-01'
SET @EndDate = DATEADD(DD,1, @EndDate)
现在在最终版本中,第一个@EndDate设置了一个select语句但是为了测试我必须硬编码,因为它是在用户启动报告时生成的,而不是每次都生成报告让它变得简单。我们的想法是,当用户输入日期时,搜索包含该日期,而不是仅仅是前一天的午夜。
如果它有帮助,那么将使用的是select语句。
DECLARE @EndDate date
SET @EndDate = (SELECT atvcEndDate FROM tbUserReport WHERE atvcUserId = @UserId)
SET @EndDate = DATEADD(DD,1, @EndDate)
无论如何将它压缩到一行,它在宏观方案中并不大,但是因为这是我们为此构建的每个存储过程中的东西,它似乎可以节省一些时间(如以及扩展我的知识,这是我发布这个的真正原因!)
提前干杯。
答案 0 :(得分:5)
是。在DATEADD()
:
SELECT
DECLARE @EndDate date;
SELECT @EndDate = DATEADD(day, 1, atvcEndDate)
FROM tbUserReport
WHERE atvcUserId = @UserId;
注意:
SELECT
中的嵌套SET
不是必需的。 SELECT
可以指定变量。@UserId
(最多)有一个匹配(可能是合理的)。