Вычисляемый столбец в MySQL из массива/формулы

Я очень новичок в базе данных MySQL. В Excel у меня есть формула, которая смотрит на ячейку даты, а затем указывает, из какого сезона берется строка данных.

В Excel я использую эту формулу, которая смотрит на месяц и день, чтобы определить, в какие значения из массива он попадает:

=LOOKUP(TEXT([DATE_CELL],"mmdd"),{"0101","0321","0621","0922","1221";"Winter","Spring","Summer","Autumn","Winter"})

Есть ли способ настроить представление или пометить его в таблице в MySQL, чтобы обновить сезон самостоятельно? Большое спасибо, что заглянули.


person Palendrone    schedule 11.02.2014    source источник


Ответы (1)


Я бы создал такую ​​функцию:

CREATE DEFINER = 'root'@'localhost' FUNCTION `getSeason`(P_date DATE)
    RETURNS varchar(10) CHARSET latin1
    DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
DECLARE v_season VARCHAR(10);
DECLARE v_month integer;
DECLARE v_day integer;
select date_format(P_date,'%m'),date_format(P_date,'%d') into v_month,v_day;
if (v_month<3 or (v_month=3 and v_day<21)) then 
     set  v_season="Winter";
else if (v_month<6 or (v_month=6 and v_day>=21)) then 
     set  v_season="Spring";
else if (v_month<9 or (v_month=9 and v_day>=21)) then 
    set   v_season="Summer";
else if (v_month<12 or (v_month=12 and v_day<=21)) then 
    set   v_season="Autumn";
else
 set  v_season="Winter";
end if;
end if;
end if;
end if;
  RETURN v_season;
END;

И используйте функцию в предложении WHERE: where getSeason(myDaeField)='Winter' Or in your select :select getSeason(myDateField) as Season

person Cedric Simon    schedule 11.02.2014
comment
ВАУ - более технично, чем я себе представлял, и я очень благодарю вас за все ваши усилия и попробую сегодня вечером :0) - person Palendrone; 11.02.2014
comment
Если это сработало для вас, отметьте ответ как принятый, чтобы будущие посетители знали, что это сработало (и я получу вознаграждение;). - person Cedric Simon; 12.02.2014