我有一个存储过程,表格包含年,月,日的整数。
BEGIN
SET NOCOUNT ON;
SELECT
[Address],
FROM [dbo].[Stats]
WHERE DATEADD(year, [year]-1900, DATEADD(month, [month]-1, DATEADD(day, [day]-1, DATEADD(hour, [hour]-1, DATEADD(minute, [minute]-1, 0))))) >= @datetime
END
如果我将datetime传递给存储过程,我该怎么做where语句。我怎样才能简化下面的程序?
我也试过这个
DATEADD(year, [year]-1900, DATEADD(month, [month]-1, DATEADD(day, [day]-1, DATEADD(hour, [hour]-1, DATEADD(minute, [minute]-1, 0))))) as [DateTime]
FROM [dbo].[Stats]
AND [DateTime] >= @datetime
并且它说[DateTime]不存在,如何在存储过程中从计算中分配AS新字段?它在查询中正常工作。
答案 0 :(得分:1)
WHERE datetimefromparts([year], [month], [year], [hour], [minute], 0) >= @datetime
我不确定你为转换做的算术是做什么的。显然,您可以将此类表达式作为函数的参数包含在内。
答案 1 :(得分:0)
SELECT DQ.Address, DQ.[DateTime]
(SELECT *,
DATEADD(year, [year]-1900, DATEADD(month, [month]-1, DATEADD(day, [day]-1, DATEADD(hour, [hour]-1, DATEADD(minute, [minute]-1, 0)))))
AS [DateTime]
)
FROM [dbo].[Stats]) AS DQ
WHERE DQ.[DateTime] >= @datetime