这是我到目前为止所得到的:
select
to_char(sysdate, 'yyyy') Time
from
dual;
这给了我:
TIME
2015
它一直工作到这一点。
我想添加
>= 7
,我会将其作为输出01.07.current year
<= 7
,我会将其作为输出01.07.(current year - 1 year)
任何想法如何处理?我想过CASE WHEN,但我不知道如何。
谢谢!
答案 0 :(得分:2)
一个简单的 CASE 表达式可以完成这项工作。
例如,
SQL> SELECT
2 '01.07.' ||
3 CASE
4 WHEN TO_CHAR(SYSDATE, 'MM') < '07'
5 THEN
6 TO_CHAR(SYSDATE, 'YYYY')
7 ELSE
8 TO_CHAR(add_months(SYSDATE,-12), 'YYYY')
9 END case_date
10 FROM dual;
CASE_DATE
----------
01.07.2015
SQL>
为了使其更加精确,您可以将常用值保留在CASE表达式之外:
SQL> SELECT '01.07.'
2 ||
3 CASE
4 WHEN TO_CHAR(SYSDATE, 'MM') < '07'
5 THEN TO_CHAR(SYSDATE, 'YYYY')
6 ELSE TO_CHAR(add_months(SYSDATE,-12), 'YYYY')
7 END case_date
8 FROM dual;
CASE_DATE
----------
01.07.2015
SQL>
答案 1 :(得分:1)
使用提取更具可读性
SELECT
to_date((CASE
WHEN extract(MONTH FROM SYSDATE) >= 7 THEN
0
ELSE
-1
END) + extract(YEAR FROM SYSDATE) || '07-01', 'yyyy-mm-dd') END
FROM dual