Oracle SQL将日期格式从DD-Mon-YY转换为YYYYMM

时间:2012-05-10 14:51:26

标签: sql oracle date-format to-date

我有一个比较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

我需要调整此查询的任何想法吗?

2 个答案:

答案 0 :(得分:3)

由于offer_date是一个数字,并且准确度低于您的实际日期,因此可能会有效... - 将您的实际日期转换为格式YYYYMM的字符串 - 对INT值有价值的Conver - 比较offer_date

的结果
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进行所有操作,您只需对一个值进行处理。

此外,如果您操纵了offer_date,那么您将无法利用该字段上的任何索引,因此强制扫描而不是SEEK。

答案 1 :(得分:1)

我错过了什么吗?您可以在比较中转换offer_date:

SELECT *
FROM offers
WHERE to_char(offer_date, 'YYYYMM') = (SELECT to_date(create_date, 'YYYYMM') FROM customers where id = '12345678') AND
      offer_rate > 0