这是我的表格。生效日期是用户输入,然后我需要使用产生打印的触发器,具体取决于用户输入的语言(仅限英语或法语)。
对于英语,我使用DATE_FORMAT来实现输出,如图所示,但是对于法语,我创建了另一个包含所有法语月份的表格,然后我用它来获取我需要的月份。
但是,我在使用这3个变量生成字符串时无法创建最终日期。
主表:
╔══════════╤════════════════╤═════════════╗
║ Language │ Effective Date │ Print ║
╠══════════╪════════════════╪═════════════╣
║ English │ 23/05/2016 │ 23 May 2016 ║
╟──────────┼────────────────┼─────────────╢
║ French │ 23/05/2016 │ ║
╚══════════╧════════════════╧═════════════╝
法国月份表:
╒═════╤═════════╕
│ num │ Month │
╞═════╪═════════╡
│ 1 │ Janvier │
├─────┼─────────┤
│ 2 │ Fevrier │
├─────┼─────────┤
│ 3 │ Mars │
╘═════╧═════════╛
and so on...
触发码:
BEGIN
IF NEW.language = "English"
THEN
SET NEW.print = DATE_FORMAT(NEW.date, '%d %M %Y');
END IF;
IF NEW.language = "French"
THEN
SET @f_day = EXTRACT(DAY FROM new.date);
SET @f_month = (SELECT month FROM `french_month` WHERE num = EXTRACT(MONTH FROM NEW.date));
SET @f_year = EXTRACT(YEAR FROM new.date);
SET NEW.print = @f_day @f_month @f_year; //I just need to display these 3 variables together
END IF;
END