SQL-запрос для получения вчера и завтра

Опубликовано: 28 Августа, 2022

Запросы помогают пользователям взаимодействовать с базой данных для создания, вставки, удаления, обновления данных в базе данных с помощью различных запросов.

В этой статье давайте посмотрим, как получить вчера и завтра относительно заданных дат в базе данных.

Пример -

Дата: 2021-03-23
Вчера: 2021-03-22 Понедельник
Завтра: 24.03.2021 Среда

Создание календаря базы данных:

CREATE DATABASE calendar;

Использование календаря базы данных

USE calendar;

Создание таблицы расписания:

CREATE TABLE schedule
(dates date);

Просмотр описания таблицы:

DESCRIBE schedule;

Вставка строк в расписание:

INSERT INTO schedule VALUES("2021-03-23");
INSERT INTO schedule VALUES("2020-08-04");
INSERT INTO schedule VALUES("2021-06-08");
INSERT INTO schedule VALUES("2030-04-04");
INSERT INTO schedule VALUES("2025-09-13");
  

Просмотр данных в таблице:

SELECT* FROM schedule;

Запрос, чтобы получить вчера и завтра текущей даты:

Чтобы получить вчера и завтра текущей даты, мы можем использовать функцию CURRDATE() в MySQL и вычесть из нее 1, чтобы получить вчера, и добавить к нему 1, чтобы получить завтра.

SELECT CURDATE(),
    DATE_SUB(CURDATE(),INTERVAL 1 DAY) AS yesterday,
    DATE_ADD(CURDATE(),INTERVAL 1 DAY) AS tomorrow;

Здесь мы можем изменить заголовок столбца по умолчанию на другое имя с помощью AS.

Пример1:

Запрос для получения вчера и завтра дат в таблице:

Syntax:
SELECT CURDATE(),
DATE_SUB(CURDATE(),INTERVAL 1 DAY) AS some_name
DATE_ADD(CURDATE(),INTERVAL 1 DAY) AS some_name;

 SELECT dates,
     DATE_SUB(dates,INTERVAL 1 DAY) AS yesterday,
     DATE_ADD(dates,INTERVAL 1 DAY) AS tomorrow
     FROM schedule;

Пример2:

Запрос для получения дат вчера и завтра в таблице с днями недели:

Syntax:

SELECT column_name,
DATE_SUB(column_name,INTERVAL 1 DAY) AS some_name,
DATE_ADD(column_name,INTERVAL 1 DAY) AS some_name,
DAYNAME(current_date),
DAYNAME(previous_day),
DAYNAME(next_day);
 

  SELECT dates,
     DATE_SUB(dates,INTERVAL 1 DAY) AS yesterday,
     DATE_ADD(dates,INTERVAL 1 DAY) AS tomorrow,
     DAYNAME(dates) AS weekdayofdate,
     DAYNAME(DATE_SUB(dates,INTERVAL 1 DAY)) AS weekdayofYd,
     DAYNAME( DATE_ADD(dates,INTERVAL 1 DAY)) AS weekdayofTm
     FROM schedule;