我有一个比较2个表中的日期,但问题是一个表的日期为DD-Mon-YY格式,而另一个表的日期为YYYYMM格式。
为了进行比较,我需要将它们都设为YYYYMM。
我需要创建这样的东西:
SELECT * FROM offers WHERE offer_date = (SELECT to_date(create_date, 'YYYYMM') FROM customers where id = '12345678') AND offer_rate > 0
其中create_date类似于2006年3月12日,offer_date类似于200605
我需要在哪里适应此查询的任何想法?
由于offer_date是数字,并且精度比实际日期低,因此可能会起作用…- 将您的真实日期转换为格式字符串YYYYMM -将值转换为INT- 比较您的结果offer_date
offer_date
YYYYMM
SELECT * FROM offers WHERE offer_date = (SELECT CAST(to_char(create_date, 'YYYYMM') AS INT) FROM customers where id = '12345678') AND offer_rate > 0
同样,通过对进行所有操作,create_date您仅可以对一个值进行处理。
create_date
此外,如果您进行了操作,offer_date将无法使用该字段上的任何索引,因此强制使用SCAN而不是SEEK。