SQL, как получить результат между набором дат, не зная конкретной даты?

0

Я отправляю HTTP-запрос в свой PHP файл с помощью javascript, я получаю дату, используя обычную функцию getDate(), однако я не знаю, что это за день, так как каждый день это будет другая дата.

Мне нужен запрос SQL, который проверяет дату и возвращает любые значения с этой даты плюс любые результаты за 2 дня до и через два дня, есть ли такой запрос для этого?

Например:

SELECT col FROM somewhere WHERE MY_DATE = 'VARIABLE_WITH_DATE' BETWEEN 2 days before and 2 days after VARIABLE_WITH_DATE

Важно помнить, что я не знаю, что это за дата, конечно, если я знаю дату, когда я мог бы сделать запрос SQL намного проще.

Я могу немного взломать javascript, чтобы исправить эту проблему, но было бы неплохо узнать, есть ли такой SQL-запрос.

Я использую MySql

Спасибо

  • 0
    Какие базы данных вы используете? (Когда дело доходит до даты / времени, многие продукты далеки от соответствия ANSI SQL.)
  • 0
    @ Ярл, я использую mysql
Теги:

2 ответа

0
Лучший ответ

Вы можете сделать это:

SELECT col 
FROM somewhere 
WHERE DATE(MY_DATE) BETWEEN 
SUBDATE(IFNULL(VARIABLE_WITH_DATE,NOW()),INTERVAL 2 DAY)
AND ADDDATE(IFNULL(VARIABLE_WITH_DATE,NOW()),INTERVAL 2 DAY);

Функция MySQL SUBDATE()

  • 0
    @csaiga спасибо, что сработало :)
0

Попробуй это:

SELECT col 
FROM somewhere 
WHERE MY_DATE BETWEEN dateadd(day,-2,VARIABLE_WITH_DATE) 
and dateadd(day,2,VARIABLE_WITH_DATE)

Вы можете прочитать больше здесь: https://www.w3schools.com/sql/func_sqlserver_dateadd.asp

  • 0
    Я не уверен, что означают dateadd и dd в вашем коде?
  • 0
    dateadd - это функция, которая манипулирует переменными даты в sql. Это выглядит как dateadd (тип [день / месяц / год], значение [1,2,3, ...], переменная для манипулирования). dd означает день, поэтому функция будет выполнять следующее: для этого потребуется VARIABLE_WITH_DATE, а First вычтет из него 2 дня, а во второй - два дня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню