今天减去30天

时间:2014-06-16 16:19:34

标签: sql sql-server

我需要在程序中运行查询/创建过滤器,每天WHERE last_paid是TODAY - 30和TODAY = convert(varchar,getdate(),101)。最大的问题似乎是该程序的不灵活性,使其成为convert(varchar,getdate(),101)以外的其他任何东西。

3 个答案:

答案 0 :(得分:4)

这将是一个简短的答案,因为这是一个非常容易的问题。您想使用DATEADD语法应该类似于TODAY = convert(varchar,DATEADD(DAY,-30,getdate()),101)

更新:我仍然认为你需要解决你将TODAY存在的问题存储为某种字符串。如果这是DATE数据类型,您将不必处理此转换废话。

答案 1 :(得分:0)

对于Oracle,请尝试:

TRUNC(SYSDATE) - INTERVAL '30' days

答案 2 :(得分:0)

我在这里错过了什么吗?

DECLARE @Today DATETIME

SELECT @Today = GETDATE() - 30

SELECT @Today AS [Today - 30]

如果您不想要时间,请不要将其设为DateTime数据类型,而是使用DATE:

DECLARE @Today DATE

SELECT @Today = GETDATE() - 30

SELECT @Today AS [Today - 30]