2012-04-18 319 views
6

我需要獲取整數的最後兩位數。放置在表中的每個元素都是全年的,即。 YYYY,我只希望最後兩位數字,使所有的字段顯示SQL獲取整數的後兩位數

YEAR 
---- 
09 
00 
89 

其中initialy場是

YEAR 
---- 
2009 
2000 
1989 

編輯:我得到一個投訴說,

HINT: No function matches the given name and argument types. You might need to add explicit type casts.

當我嘗試

select right(cast(year as char),2) from subjects;

回答

9

的Postgres借來(或繼承)的模運算從C:

SET search_path='tmp'; 

CREATE TABLE lutser (year integer); 

INSERT INTO lutser (year) 
     SELECT generate_series(1991,2012) 
    ; 

SELECT year 
    , year/100 as c2 
    , year % 100 AS y2 
    FROM lutser 
    ; 

結果:

CREATE TABLE 
INSERT 0 22 
year | c2 | y2 
------+----+---- 
1991 | 19 | 91 
1992 | 19 | 92 
1993 | 19 | 93 
1994 | 19 | 94 
1995 | 19 | 95 
1996 | 19 | 96 
1997 | 19 | 97 
1998 | 19 | 98 
1999 | 19 | 99 
2000 | 20 | 0 
2001 | 20 | 1 
2002 | 20 | 2 
2003 | 20 | 3 
2004 | 20 | 4 
2005 | 20 | 5 
2006 | 20 | 6 
2007 | 20 | 7 
2008 | 20 | 8 
2009 | 20 | 9 
2010 | 20 | 10 
2011 | 20 | 11 
2012 | 20 | 12 
(22 rows) 
3
select substring(CAST(2012 as CHAR(4)), 3, 2) 
1

我不知道是否有在Postgres的一個LEN功能,但如果這樣做,試試這個:

select SUBSTRING(year,len(year)-1,len(year)) 
+0

當我試圖用LEN()或length()函數在PostgreSQL裏它說,功能沒有按」 t存在。 – Madhusudan 2015-05-19 08:43:33

0

您還可以使用下面的SQL查詢:

select to_char as year from to_char(current_timestamp, 'YY') 

這裏我們使用年份的後兩位數字從CURRENT_TIMESTAMP