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

Tom*_*Tom 5 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
Run Code Online (Sandbox Code Playgroud)

其中 create_date 类似于 12-Mar-2006,offer_date 类似于 200605

我需要调整这个查询有什么想法吗?

Mat*_*lie 5

由于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 
Run Code Online (Sandbox Code Playgroud)

另外,通过对 进行所有操作,create_date您只需对一个值进行处理。

此外,如果您操纵了offer_date该字段,您将无法使用该字段上的任何索引,因此会强制执行 SCAN 而不是 SEEK。