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

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

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

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

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

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

SELECT     Sales.SalesOrderHeader.OrderDate
           
FROM       Sales.SalesOrderHeader
WHERE Sales.SalesOrderHeader.OrderDate > (SELECT MAX(dateadd(MONTH,datediff(MONTH,0,EOMONTH(Sales.SalesOrderHeader.OrderDate,-2)),0))-1 FROM Sales.SalesOrderHeader)

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

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

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

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

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

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

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


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

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

9   голосов , оценка 4 из 5
Похожие ответы