其中日期大于整数日期的sql

其中日期大于整数日期的sql,sql,sql-server,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))))) >

我有一个存储过程,表由年、月、日的整数组成

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]不存在,我如何从存储过程中的计算中指定为新字段?它在查询中正常工作。

使用:


我不确定你为转换做的算术是为了什么。显然,您可以将这些表达式作为参数包含到函数中。

用您正在使用的数据库(很明显是SQL Server)标记您的问题。可能的重复项您不能在where子句中使用像
[DateTime]
这样的别名,您需要在
语句中再次重复整个计算。我不相信在
普通查询中那样工作
datefromparts只接受3个参数,其中(datefromparts([year],[month],[year])>=@datetime和datefromparts([hour],[minute],0)>=@datetime)?如果你只有一天(没有时间),那么使用
datefromparts(),如果需要完整的datetime,则
datetimefromparts()
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
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