是否可以以TO_CHAR(日期时间)格式插入文字字符?

Jon*_*son 5 sql oracle plsql

我想以这种格式选择一些日期:

yyyydDOY
Run Code Online (Sandbox Code Playgroud)

yyyy4位数年份在哪里,是一年DOY中的一天(1-366),d是字面意思"d".这是我试过的:

SQL> select to_char(sysdate, 'YYYYdDDD') from dual;

TO_CHAR(
--------
20130713
Run Code Online (Sandbox Code Playgroud)

显然这都是错的.我想要的结果可以在命令行中找到:

$ date +'%Yd%j'
2013d071
Run Code Online (Sandbox Code Playgroud)

Jon*_*son 18

首先,问题中的代码被读作DDDD,函数解释为DDD(一年中的某一天:071),然后是D(星期几:3).

解决方案是引用任何带双引号(")的文字:

SQL> select to_char(sysdate, 'YYYY"d"DDD') from dual;

TO_CHAR(
--------
2013d071
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅表3-15日期时间格式元素.