sql其中date大于整数日期

时间:2018-06-05 14:04:10

标签: sql sql-server

我有一个存储过程,表格包含年,月,日的整数。

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新字段?它在查询中正常工作。

2 个答案:

答案 0 :(得分:1)

使用datetimefromparts()

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