编写查询以以“ YYYY-MM-DD”格式显示计划ID和日期,并将该列命名为FormattedDate

时间:2019-04-14 14:29:22

标签: oracle

写一个查询,以“ YYYY-MM-DD”的格式显示计划ID和日期,并将列命名为FormattedDate。按时间表ID升序显示记录。

select schedule_id, to_char(to_date(travel_date,'DD-MON-YY'),'YYYY-MM-DD')
 as FormattedDate from schedule order by schedule_id;

这是我的代码。当我对此进行评估时,它仅通过了两个测试用例之一。我的输出符合预期,但我认为代码中有一些错误。

这是架构:

Schema

3 个答案:

答案 0 :(得分:0)

DATE已经是TO_DATE( date_string, format_model )数据类型;不需要在其上使用DATE,因为该函数期望将字符串作为第一个参数,并且您传递了NLS_DATE_FORMAT,因此oracle必须应用隐式转换(使用select schedule_id, to_char( to_date( TO_CHAR( travel_date, (SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT') ), 'DD-MON-YY' ), 'YYYY-MM-DD' ) as FormattedDate from schedule order by schedule_id; 会话参数作为格式模型),并且您的声明有效:

NLS_DATE_FORMAT

DD-MON-YYselect schedule_id, to_char( travel_date, 'YYYY-MM-DD' ) as FormattedDate from schedule order by schedule_id; 格式模型不同时,这会产生问题。

相反,请执行以下操作:

select schedule_id,
       to_char( travel_date, 'YYYY-MM-DD' ) as "FormattedDate"
from   schedule
order by schedule_id;

如果该列需要使用正确的大小写,则使用带引号的标识符来强制区分大小写:

403 Forbidden

答案 1 :(得分:0)

Select schedule_id,to_char(travel_date,'yyyy-mm-dd')as formatted from schedule order by schedule id asc; 

有效:)

答案 2 :(得分:0)

SELECT SCHEDULE_ID, to_char(travel_date, 'yyyy-mm-dd') as Formattedd FROM SCHEDULE ORDER BY SCHEDULE_ID;

工作正常