how to get 30 days from Todays

匿名 (未验证) 提交于 2019-12-03 09:14:57

问题:

Select from x     WHERE yid = rid     AND (h.test1 <=todaysdate) AND (h.test1>= 30 days from today) 

How can I write that line 30 days from today in a query? Instead I put a date or a month from todays date.

回答1:

In MySQL you can write:

SELECT * FROM x WHERE yid=r=d        AND h.test1 <= todaysdate       AND h.test1 >= ADDDATE(todaysdate, INTERVAL 31 DAY); 

Are you sure anyway of your request?
Don't you want instead (dates before today or after 30 days):

SELECT * FROM x WHERE yid=r=d        AND (h.test1 <= todaysdate       OR h.test1 >= ADDDATE(todaysdate, INTERVAL 31 DAY)); 

or (dates between today and 30 days from today)

SELECT * FROM x WHERE yid=r=d        AND h.test1 BETWEEN todaysdate AND ADDDATE(todaysdate, INTERVAL 31 DAY); 

EDITED after user comment:
In MS SQL you can use

SELECT * FROM x WHERE yid=r=d        AND h.test1 BETWEEN todaysdate AND DATEADD(dd, 30, todaysdate); 

or

SELECT * FROM x WHERE yid=r=d        AND h.test1 BETWEEN DATEDIFF(dd, 30, todaysdate) AND todaysdate; 

Note that (as I've already told you in my comment) @dbaseman gave you correct syntax for adding days. Mine is just the correct query using that syntax.

EDITED again after user comment:

SELECT * FROM x WHERE yid=r=d        AND h.test1 BETWEEN DATEDIFF(dd, 30, NOW()) AND NOW(); 


回答2:

Would help to know which SQL. In MS SQL:

dateadd(dd, 30, todaysdate) 


回答3:


Use BETWEEN for brevity and sysdate for todays date in Oracle.

SELECT *   FROM x  WHERE yid = rid AND h.test1 BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE) + 30; 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!