小编典典

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

sql

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

我需要在哪里适应此查询的任何想法?


阅读 24

收藏
2021-04-22

共1个答案

小编典典

由于offer_date是数字,并且精度比实际日期低,因此可能会起作用…-
将您的真实日期转换为格式字符串YYYYMM
-将值转换为INT-
比较您的结果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将无法使用该字段上的任何索引,因此强制使用SCAN而不是SEEK。

2021-04-22