【问题标题】:Oracle 11g SQL - DD/MON/YYYY to MONTH DD, YYYY with WHERE month year clauseOracle 11g SQL - DD/MON/YYYY 到 MONTH DD, YYYY 与 WHERE 月年子句
【发布时间】:2013-10-18 10:30:10
【问题描述】:

我正在尝试从特定月份和年份(2012 年 2 月)下的订单中获取记录。包含该数据的列 (Dtordered) 当前采用 DD/Mon/YYYY 格式。我需要以 MONTH DD、YYYY 格式显示日期。我该怎么办?我知道我需要使用 WHERE 子句来获取日期和年份的记录。在伪中,这就是我正在尝试的。

SELECT Idbasket, Idshopper, Dtordered(MONTH DD, YYYY)
FROM bb_basket
WHERE Dtordered(Mon)='Feb' AND Dtordered(YYYY)=2012;

如何更正我的格式和条件?我什至接近吗?

【问题讨论】:

  • Dtordered 的数据类型是什么?

标签: sql oracle date datetime format


【解决方案1】:

一个非常简单的使用to_char函数的技巧,看:

月份:

to_char(YOUR_FIELD , 'MM') = 09

年份:
to_char(YOUR_FIELD , 'YYYY') = 2014

对于一天:
to_char(YOUR_FIELD , 'DD') = 25

描述月份:

to_char(YOUR_FIELD , 'MON') = 'FEB'

to_char(YOUR_FIELD , 'MONTH') LIKE '%FEBRUARY%'

to_char 函数由 sql 语言支持,而不是由一个特定的数据库支持。

一个成瘾信息。在 oracle 数据库中获取实际日期的月份描述:

select to_char(sysdate,'MON') from dual; -- 今天返回 SET
select to_char(sysdate,'MONTH') from dual; --today 返回 SETEMBER

希望对大家有所帮助...

腹肌!

【讨论】:

    【解决方案2】:

    假设Dtordered 存储为DATE(我希望如此,因为它是一个日期)

    [如果不是,您必须在需要处理 Dtordered 时使用 TO_DATE(Dtordered, 'DD/Mon/YYYY'),但这很糟糕]

    使用TO_CHAR 以给定格式显示日期。

    你可以使用

    TO_CHAR(<yourdate>, 'YYYYMM') = '201202' 获取年份和月份值。

    EXTRACT(year from <yourdate>) = 2012 and EXTRACT(month from <yourdate>) = 2
    

    所以

    SELECT Idbasket, Idshopper, TO_CHAR(Dtordered, 'MONTH DD, YYYY')
    FROM bb_basket
    WHERE TO_CHAR(Dtordered, 'YYYYMM')='201202';
    

    【讨论】:

    • Oracle 没有 MONTH 或 YEAR 函数。
    • @Ramblin'Man 哦,看来你是对的,我正在混合我的 dbms
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    相关资源
    最近更新 更多