我有一张表格,其中包含商店中商店展示的安装日期信息。每个商店展示都有一定的保修期,可以是6个月,1年,2年等,我在另一个表中存储为“6个月”,“1年”,“2年”等。
是否可以使用单个MySQL查询计算每个商店展示的到期日期?我正在寻找这样的东西:
SELECT t1.install_date, (t1.install_date + INTERVAL t2.period) as expiry_date FROM t1, t2
所以,我基本上试图将从t2表中得到的字符串值视为MySQL语句的一部分。这可能吗?对于我的查询,MySQL不会给出任何错误,但会在expiry_date列中显示这样的值:“20110228”,“20110224”,对应的值为t1.install_date“2011-02-28”,“2011-02-24”
答案 0 :(得分:1)
看看STR_TO_DATE(str,format)。但我认为这将非常困难。祝你好运。
答案 1 :(得分:1)
这比我想象的要难,因为DATE_ADD
不接受字符串作为INTERVAL
单位。因此,我提出的解决方案是通过乘以12将所有YEAR
值动态转换为月份。
此外,您需要指定连接条件,否则您将计算两个表的整个笛卡尔积的间隔。
SELECT t1.install_date, DATE_ADD(t1.install_date,
INTERVAL IF(SUBSTRING_INDEX(t2.period,' ','-1')='YEAR',
SUBSTRING_INDEX(t2.period,' ','1')*12,
SUBSTRING_INDEX(t2.period,' ','1'))
MONTH) as expiry_date
FROM t1,t2 WHERE t1.id = t2.id