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;
以上有什么问题吗?
此致,
炖阿什顿
我正在处理作业问题,我的功能运行良好。我完成了我教授的要求,但我需要帮助使用 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;
以上有什么问题吗?
此致, 炖阿什顿