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