【问题标题】:Retrieve previous month from date column that contains MONYYYY从包含 MONYYYY 的日期列中检索上个月
【发布时间】:2013-06-05 01:26:04
【问题描述】:

我需要更改来自 May2013 (MonYYYY) 形式的表格的日期值。列本身是一个 VARCHAR

在我的选择语句中,我希望检索上个月(2013 年 4 月)。如果我使用的是 SYSDATE,我已经进行了一些研究并发现了以下内容:

select to_date(add_months(sysdate, 'MONYYY')-1) from dual

如何使它适用于我上面的日期结构?我试过了:

select to_date(add_months(date.datetable, MONYYY)-1) from datetable

【问题讨论】:

  • 首先,永远不要将日期存储在 varchar 中,其次,ADD_MONTHS() 是一个有两个参数的函数,因此您需要在 -1 之前添加一个逗号,第三,您有 TO_DATE() 和ADD_MONTHS() 反了,第四你需要引用'MONYYY',第五是'MONYYYY'(额外的Y),最后是datetable.date而不是date.datetable

标签: sql oracle oracle11g date-arithmetic


【解决方案1】:

ADD_MONTHS 函数需要一个日期变量作为输入。因此,首先您需要将 varchar 列转换为日期类型,然后应用 add_months 函数。

SELECT ADD_MONTHS (TO_DATE ('May2013', 'monyyyy'), -1) FROM DUAL;

返回类型将是日期。在这种情况下,它返回四月第一天的第 0 个小时。

【讨论】:

    猜你喜欢
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多