将字符串视为MySQL语句?

时间:2011-03-03 13:05:58

标签: mysql date

我有一张表格,其中包含商店中商店展示的安装日期信息。每个商店展示都有一定的保修期,可以是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”

2 个答案:

答案 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
相关问题