Запрос о выведении информации последних месяцев - MySQL

Узнай цену своей работы

Формулировка задачи:

ДОБРЫЙ ДЕНЬ!!!

Подскажите пожалуйста, как написать запрос выведения информации последних 3 месяцев? информацию последних 5 дней нашел так
Листинг программы
  1. SELECT Sales.SalesOrderHeader.OrderDate
  2. FROM Sales.SalesOrderHeader
  3. WHERE (Sales.SalesOrderHeader.OrderDate) > (SELECT (MAX(Sales.SalesOrderHeader.OrderDate))-5 FROM Sales.SalesOrderHeader)
Нашел расчет начало предыдущего месяца, но как теперь сделать чтоб с этой даты выводились данные?
Листинг программы
  1. SELECT Sales.SalesOrderHeader.OrderDate,
  2. dateadd(MONTH,datediff(MONTH,0,Sales.SalesOrderHeader.OrderDate),0)AS НачалоМесяца,
  3. EOMONTH(Sales.SalesOrderHeader.OrderDate)AS КонецМесяца,
  4. dateadd(MONTH,datediff(MONTH,0,EOMONTH(Sales.SalesOrderHeader.OrderDate,-1)),0)AS НачалоПредМесяца,
  5. EOMONTH(Sales.SalesOrderHeader.OrderDate,-1)AS КонецПредМесяца
  6. FROM Sales.SalesOrderHeader
  7. WHERE Sales.SalesOrderHeader.OrderDate > (SELECT MAX(Sales.SalesOrderHeader.OrderDate)-1 FROM Sales.SalesOrderHeader)

ВСЕМ ГИГАНТСКОЕ СПАСИБО!!! РЕШИЛ САМ!!!

Листинг программы
  1. SELECT Sales.SalesOrderHeader.OrderDate
  2. FROM Sales.SalesOrderHeader
  3. WHERE Sales.SalesOrderHeader.OrderDate > (SELECT MAX(dateadd(MONTH,datediff(MONTH,0,EOMONTH(Sales.SalesOrderHeader.OrderDate,-2)),0))-1 FROM Sales.SalesOrderHeader)

ТЕПЕРЬ ВАЗНИКЛА НОВАЯ ПРОБЛЕМА!!!

Как отобразить информацию за последние 3 недели?

Решение задачи: «Запрос о выведении информации последних месяцев»

textual
Листинг программы
  1. SELECT DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE())-1,0) /* определяет начало предыдущего года */
  2. SELECT DATEADD(QUARTER,DATEDIFF(QUARTER,0,GetDate())-1,0) /* определяет начало предыдущего квартала */
  3. SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,GetDate())-1,0) /* определяет начало предыдущего месяца */
  4. SELECT DATEADD(WEEK,DATEDIFF(WEEK,0,GetDate())-1,0) /* определяет начало предыдущей недели */
  5. SELECT DATEADD(DAY,DATEDIFF(DAY,0,GetDate())-1,0) /* определяет начало предыдущего дня */
  6. SELECT DATEADD(DAY,DATEDIFF(DAY,0,GetDate()),0) /* определяет начало текущего дня */
  7. SELECT DATEADD(DAY,DATEDIFF(DAY,0,GetDate())+1,0) /* определяет начало следующего дня */
  8. /* и т.д. */
  9. SELECT DATEADD(MONTH,6,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE())-1,10))/* определяет предыдущий год и фиксирует определенный месяц и день */
  10. SELECT DATEADD(DAY,10,DATEADD(MONTH,6,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE())-1,0)))/* аналогично */
  11. SELECT DATEADD(YEAR,-1, DATEADD(MONTH, DATEDIFF(MONTH,0,GETDATE())-1,10))/* определяет предыдущий год, месяц ... */
  12.  
  13. SELECT EOMONTH ( GETDATE(), -1 )/* определяет конец предыдущего месяца */
  14. SELECT EOMONTH ( GETDATE(), 0 )/* определяет конец текущего месяца */
  15. SELECT EOMONTH ( GETDATE(), +1 )/* определяет конец следующего месяца */

Объяснение кода листинга программы

  1. Код использует функции DATEDIFF и DATEADD для работы с датами.
  2. Функция DATEDIFF используется для вычисления разницы между текущей датой и определенным базовым значением (например, началом предыдущего года).
  3. Функция DATEADD используется для добавления определенного количества месяцев, дней или лет к базовой дате.
  4. Код также использует функцию GETDATE для получения текущей даты.
  5. Код вычисляет начало и конец предыдущего, текущего и следующего месяца, а также начало и конец определенных дней в этих месяцах.
  6. Функция EOMONTH используется для определения последнего дня месяца.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы