Подтвердить что ты не робот

Как получить один день раньше заданной даты?

Предположим, у меня есть дата 2010-07-29. Теперь я хотел бы проверить результат на один день вперед. как это сделать

Например,

SELECT * 
  from table 
 where date = date("2010-07-29")

Как сделать один день раньше, не меняя строку "2010-07-29"?

Я искал и получил предложение от сети, и я попробовал

SELECT * 
  from table 
 where date = (date("2010-07-29") - 1 Day)

но не удалось.

4b9b3361

Ответ 1

MySQL

SELECT * 
  FROM TABLE t
 WHERE t.date BETWEEN DATE_SUB('2010-07-29', INTERVAL 1 DAY)
                  AND '2010-07-29'

Измените DATE_SUB на DATE_ADD, если вы хотите добавить в день (и измените параметры BETWEEN).

SQL Server

SELECT *
  FROM TABLE t
 WHERE t.date BETWEEN DATEADD(dd, -1, '2010-07-29')
                  AND '2010-07-29'

Oracle

SELECT *
  FROM TABLE t
 WHERE t.date BETWEEN TO_DATE('2010-07-29', 'YYYY-MM-DD') - 1
                  AND TO_DATE('2010-07-29', 'YYYY-MM-DD')

Я использовал BETWEEN, потому что столбец date, скорее всего, DATETIME (на MySQL и SQL Server, против DATE на Oracle), который включает в себя временную часть, поэтому равнозначно, что значение должно точно равняться. Эти запросы дают вам промежуток времени.

Ответ 2

Если вы используете Oracle, вы можете использовать операторы + и - для добавления количества дней к дате.

http://psoug.org/reference/date_func.html

Пример:

SELECT SYSDATE  +  1 FROM dual;

Выйдет завтра.

Если вы используете не, используя Oracle, скажите, пожалуйста, используя то, что вы используете, чтобы мы могли дать лучшие ответы. Это зависит от используемой вами базы данных. Он не будет одинаковым в разных базах данных.

Ответ 3

Если вы используете MSSQL, вы ищете DateAdd() Я немного нечеткий по синтаксису, но это что-то вроде:

Select * //not really, call out your columns
From [table]
Where date = DateAdd(dd, -1, "2010-07-29",)

Изменить. Этот синтаксис должен быть правильным: он был обновлен в ответ на комментарий.

У меня могут быть определенные параметры в неправильном порядке, но вы должны туда добраться.

Ответ 4

Зависит от функций DateTime, доступных на РСУБД

Для Mysql вы можете попробовать:

mysql> SELECT DATE_ADD('1997-12-31',
->                 INTERVAL 1 DAY);


mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
    -> '1997-12-02'

Ответ 5

В PL SQL: select sysdate+1 from dual;