将月份编号从两个表转换为月份名称

时间:2016-03-09 07:25:51

标签: sql oracle

如果有以下记录,如何将月号转换为月份名称:

例如。

select date from tableClient;

17.01.07
18.02.08
18.03.08
18.04.08
18.05.08
18.06.08
18.07.08
18.08.08

预期结果是:

17.January.07
18.February.08
18.March.08
18.April.08
......

如何仅从该记录中转换MM?

PS。我必须编写一个查询,其中存在两个或三个条件,例如。

    select id, firstName, lastName, date from tableClient, tableActivity 
where tableClient.id = tableActivity.id and tableActivity.status= 'YES' 
AND tableActiviy.type = 'SMS';

条件:日期必须采用以下形式:例如。 01.January.03

3 个答案:

答案 0 :(得分:1)

您必须使用to_char()函数和trim()函数来删除月份名称后的额外空格:

select trim(to_char(sysdate, 'dd.Month')) || '.' || to_char(sysdate,'yy') from dual;

用你的例子:

select id, firstName, lastName, trim(to_char(date, 'dd.Month')) || '.' || to_char(date,'yy') 
from tableClient, tableActivity 
where tableClient.id = tableActivity.id and tableActivity.status= 'YES' 
AND tableActiviy.type = 'SMS';

答案 1 :(得分:0)

使用 TO_CHAR FMMONTH一起显示 所需格式的日期。

来自documentation

  

格式化模型修饰符

     

FM和FX修饰符,用于TO_CHAR中的格式模型   功能,控制空白填充和精确格式检查。

     

修改器可以多次出现在格式模型中。在这样的   case,每次后续的事件都会切换修饰符的效果。   对其后的模型部分启用其效果   第一次出现,然后为其后面的部分禁用   第二,然后重新启用第三个之后的部分,等等   上。

     

FM Fill模式。 Oracle使用尾随空白字符和前导零   将格式元素填充到恒定宽度。宽度等于   显示相关格式模型的最大元素的宽度:

例如,

SQL> SELECT to_char(SYSDATE, 'DD-FMMONTH-YY') FROM DUAL;

TO_CHAR(SYSDATE
---------------
09-MARCH-16

SQL> SELECT to_char(to_date('17.01.07','dd.mm.yy'), 'DD-fmMONTH-fmYY') FROM DUAL;

TO_CHAR(TO_DATE
---------------
17-JANUARY-07

答案 2 :(得分:-1)

试试SQL Server

SELECT FORMAT(date,'dd.MMMM.yy') AS date
FROM tableClient;

实施例,

enter image description here