как получить 30 дней из сегодняшнего дня - PullRequest
1 голос
/ 28 марта 2012
Select from x
    WHERE yid = rid
    AND (h.test1 <=todaysdate) AND (h.test1>= 30 days from today)

Как я могу написать эту строку 30 дней с сегодняшнего дня в запросе?Вместо этого я поставил дату или месяц от сегодняшней даты.

Ответы [ 3 ]

3 голосов
/ 28 марта 2012

Помогло бы узнать, какой SQL. В MS SQL:

dateadd(dd, 30, todaysdate)
1 голос
/ 28 марта 2012

В MySQL вы можете написать:

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

Вы в любом случае уверены в своем запросе?
Не хотите вместо этого (даты до сегодняшнего дня или после 30 дней):

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

или (даты от сегодняшнего дня до 30 дней с сегодняшнего дня)

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

ИЗМЕНЕНО после комментария пользователя :
В MS SQL вы можете использовать

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

или

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

Обратите внимание, что (как я уже говорил вам в моем комментарии) @dbaseman дал вам правильный синтаксис для добавления дней. Мой правильный запрос с использованием этого синтаксиса.

ИЗМЕНЕНО снова после комментария пользователя:

SELECT * FROM x
WHERE yid=r=d 
      AND h.test1 BETWEEN DATEDIFF(dd, 30, NOW()) AND NOW();
0 голосов
/ 28 марта 2012

Используйте BETWEEN для краткости и sysdate для текущей даты в Oracle.

SELECT *
  FROM x
 WHERE yid = rid AND h.test1 BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE) + 30;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...