Запрос о выведении информации последних месяцев - 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 )/* определяет конец следующего месяца */
Объяснение кода листинга программы
- Код использует функции DATEDIFF и DATEADD для работы с датами.
- Функция DATEDIFF используется для вычисления разницы между текущей датой и определенным базовым значением (например, началом предыдущего года).
- Функция DATEADD используется для добавления определенного количества месяцев, дней или лет к базовой дате.
- Код также использует функцию GETDATE для получения текущей даты.
- Код вычисляет начало и конец предыдущего, текущего и следующего месяца, а также начало и конец определенных дней в этих месяцах.
- Функция EOMONTH используется для определения последнего дня месяца.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д