我正在尝试使用yy-mm这样的格式来格式化年和月
我可以这样计算得出我的年份值:
ROUND(months_between(sysdate,hiringdate)/12)
获得月份值:
ROUND(months_between(sysdate,hiringdate))
我只是不知道如何将这2种形式组合为yy-mm格式
答案 0 :(得分:2)
这看起来像Oracle,因此请尝试以下操作:
select (lpad(floor(months_between(sysdate, hiringdate)/12), 2, '0') || '-' ||
lpad(mod(floor(months_between(sysdate, hiringdate)), 12), 2, '0')
) as yymm
答案 1 :(得分:0)
这取决于:有许多种SQL。
在Oracle和标准SQL中,您可以使用string1 || string2
在MySQL中,有CONCAT(string1, string2)
函数
在SAS中有一个COMPRESS(string1 || string2)
语句,看起来像上面的组合。
搜索如何在您的平台上执行此操作,或者让它知道它是哪个。
答案 2 :(得分:0)
您可以执行以下操作。使用EMP
模式中的SCOTT
表进行测试。
select empno, ename, hiredate,
to_char(floor(mths/12), 'fm99') || '-' ||
to_char(mod(mths, 12) , 'fm00') as yymm
from (
select empno, ename, hiredate,
round(months_between(sysdate, hiredate)) as mths
from scott.emp
)
;
EMPNO ENAME HIREDATE YYMM
---------- ---------- ----------- -------
7369 SMITH 17-DEC-1980 38-03
7499 ALLEN 20-FEB-1981 38-01
7521 WARD 22-FEB-1981 38-01
7566 JONES 02-APR-1981 38-00
7654 MARTIN 28-SEP-1981 37-06
7698 BLAKE 01-MAY-1981 37-11
7782 CLARK 09-JUN-1981 37-09
7788 SCOTT 19-APR-1987 31-11
7839 KING 17-NOV-1981 37-04
7844 TURNER 08-SEP-1981 37-06
7876 ADAMS 23-MAY-1987 31-10
7900 JAMES 03-DEC-1981 37-04
7902 FORD 03-DEC-1981 37-04
7934 MILLER 23-JAN-1982 37-02
答案 3 :(得分:-1)
大概有一百万种方法可以做到这一点。其中之一是这个:
SELECT RIGHT (CAST (YEAR (GETDATE()) AS VARCHAR(4)), 2) + '-' + RIGHT ('0' + CAST (MONTH (GETDATE()) AS VARCHAR (2)), 2)