Získat výsledek nebude snadné – protože jej ukládáte jako prostý 1 Year
nebo podobné. Není povoleno jej používat dynamicky v INTERVAL
konstrukt - MySQL syntaxe požadavky
že ukážete jak intervalové množství, tak typ.
Existuje však trik, jak tuto záležitost vyřešit:
SELECT
product_name,
start_date,
expiry_period,
@num:=CAST(expiry_period AS UNSIGNED),
@p :=SUBSTR(expiry_period, CHAR_LENGTH(@num)+2),
CASE
WHEN @p='Year' THEN DATE_ADD(start_date, INTERVAL @num YEAR)
WHEN @p='Month' THEN DATE_ADD(start_date, INTERVAL @num MONTH)
WHEN @p='Day' THEN DATE_ADD(start_date, INTERVAL @num DAY)
WHEN @p='Week' THEN DATE_ADD(start_date, INTERVAL @num WEEK)
END AS end_date
FROM
tbl_products
-jak vidíte, tento dotaz se opírá o skutečnost, že množství je vždy na prvním místě (takže CAST
extrahuje přesně to, proto jej lze použít k získání délky intervalu po tomto). V každém případě však budete muset přepočítat všechno možné typy intervalů v CASE
doložka
Dalším dobrým nápadem by bylo - uložit menstruaci v jednotné podobě (například vždy ve dnech) - takže budete ukládat pouze jedno číslo pro každý řádek (tedy 1 týden =7 dní atd.)