SQL:如何正确嵌套 TRIM() 方法

SQL: How to properly nest TRIM() method

我正在处理作业问题,我的功能运行良好。我完成了我教授的要求,但我需要帮助使用 Trim() 方法格式化我的最后一个语句。我不知道如何将它与其他 2 种方法正确嵌套。我在第一行正确地完成了,但是我在第 3 行很难格式化 "FIRST_PAY DAY" 列的日期。下面是我使用一个 Trim() 方法的工作函数-

SQL> SELECT empno, ename, sal, TRIM(TO_CHAR(hiredate, 'Month')) || ' ' || 
     TO_CHAR(hiredate, 'fmddTH, YYYY') AS "HIRE DAY",
  2  TO_CHAR(NEXT_DAY(hiredate, 'FRIDAY'),
  3  'Month fmddTH, YYYY') "FIRST_PAY DAY"
  4  FROM emp;

谢谢!

这是我尝试执行的代码,但没有成功-

SQL> SELECT empno, ename, sal, TRIM(TO_CHAR(hiredate, 'Month')) || ' ' || 
     TO_CHAR(hiredate, 'fmddTH, YYYY') AS "HIRE DAY",
  2  TO_CHAR(NEXT_DAY(hiredate, 'FRIDAY'),
  3  TRIM(TO_CHAR('Month')) || ' ' || TO_CHAR('fmddTH, YYYY')) 
     "FIRST_PAY DAY"
  4  FROM emp;

"HIRE DAY" 列已使用 TRIM() 方法正确格式化,但 "First_PAY DAY" 列不是。下面是我从两个日期列中输出的一部分-

  HIRE DAY              FIRST_PAY DAY
 ___________________   ___________________
 May 1st, 1981         May       8th, 1981

月份值比较大,需要trim自己调

试试。

TRIM(TRIM(TO_CHAR('Month'))) || ' ' || TO_CHAR('fmddTH, YYYY')) "FIRST_PAY DAY"

您的代码首先连接字段,然后trim生成结果。到那时 trim 月份和日期之间的区域为时已晚。

Oracle 具有非常好的日期格式。花几分钟时间探索可用的日期格式是值得的。很可能您可以通过一个 to_char(date, 'several-date-format-codes-can-go-here') 调用生成您想要的输出。

为了回应您的评论,这是一个使用 sysdate 而非 hiredate 并从虚拟对偶 table 而非 emp 中进行选择的工作示例。

select TO_CHAR(sysdate, 'Month') || 
       ' ' || 
       TO_CHAR(sysdate, 'fmddTH, YYYY') AS "HIRE DAY", 
       TO_CHAR(NEXT_DAY(sysdate, 'FRIDAY')), 
       TRIM(TRIM(TO_CHAR(sysdate, 'Month'))) || 
       ' ' || 
       TO_CHAR(sysdate, 'fmddTH, YYYY') "FIRST_PAY DAY"
       FROM dual;

您似乎缺少一些 TO_CHARs

的聘用日期
select to_char(hiredate,'fmMonth ddth, yyyy') as hiredate,
to_char(next_day(hiredate, 'FRIDAY'),'fmMonth ddth, yyyy') as payday
from emp;

以上有什么问题吗?

此致, 炖阿什顿