Использование функции / процедуры SQL для получения диапазона дат последнего финансового года (с июля прошлого года по июнь этого года)

#mysql #sql

Вопрос:

[запрос результата должен выглядеть следующим образом 1] Я пытаюсь найти способ использования функций в mysql workbench, мой запрос здесь — получить финансовый год (с июля прошлого года по июнь этого года) на основе заданной даты в качестве параметра Вот моя функция, чтобы получить представление

 create function GetFIYear(@parm varchar(50)) RETURNS VARCHAR
  AS
  BEGIN
  DECLARE @FIYear VARCHAR(20)
  SELECT FIYear = (CASE WHEN (MONTH(GETDATE()))
  <= 7 THEN convert(varchar(4), YEAR(GETDATE())-1)   '-'   convert(varchar(4), YEAR(GETDATE())0)
  ELSE convert(varchar(4),YEAR(GETDATE()))  '-'   convert(varchar(4),(YEAR(GETDATE())0) 1)END)
  
return @FIYear
END 
 

@PARM — это параметр, GETDATE() может быть заменен параметром date во время вызова функции..

Затем я хотел бы использовать оператор SELECT для выполнения запроса (не идентичного приведенному ниже)

 select Title,
GetFIYear(@date_parameter) 
from [table];
 

Любая помощь будет оценена, спасибо.

Комментарии:

1. MySQL <> SQL Server — пожалуйста, исправьте свои теги.

2. Каков ваш точный вопрос?

3. мой вопрос заключается в том, чтобы получить поля даты финансового года для каждой строки в таблице, например, что-то похожее на «2020-21» для дат в период с июля 2020 года по июнь 2021 года

4. Какая версия MySQL? Пожалуйста, запустите SELECT version(); , чтобы проверить.

5. должен @PARM быть тип даты?

Ответ №1:

 CREATE FUNCTION GetFIYear (parameter DATE)
RETURNS DATE
RETURN CONCAT(YEAR(parameter - INTERVAL 6 MONTH), '-06-30');
 

ДЕМОНСТРАЦИЯ

Во время вызова функции parameter должен быть буквальный, имя столбца или выражение. Его значение должно быть допустимым для значения ДАТЫ или даты (например, если значение является столбцом VARCHAR, то его значение должно содержать допустимый литерал даты и времени). См . Справочное руководство по MySQL 8.0 / … / Литералы даты и времени. ВРЕМЕННАЯ МЕТКА UNIX (числовое) значение недопустимо и должно быть преобразовано FROM_UNIXTIME() .

Если значение, предоставленное функции, не является допустимым значением datetime one, а текущий режим SQL Server является строгим, тогда генерируется ошибка. Если значение недопустимо, но режим не является строгим, тогда функция возвращает NULL и генерируется предупреждение.

Комментарии:

1. Спасибо, я искал решение с сохраненной функцией / процедурой для запроса больших наборов данных, что является утомительной задачей для начала.. Спасибо за ваш ответ, ценю это