2012-04-18 51 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

相关问题