2012-04-18 14 views
6

Мне нужно получить последние две цифры целого числа. Каждый элемент, помещенный в таблицы, приходит как полный год, т.е. YYYY и я хочу только две последние цифры, так что все поля показываютSQL, получающий последние две цифры целого числа

YEAR 
---- 
09 
00 
89 

где initialy поле было

YEAR 
---- 
2009 
2000 
1989 

EDIT: Я получаю жалобы, говоря:

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

Я не знаю, если есть функция LEN на Postgres, но если это произойдет, попробуйте следующее:

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

, когда я попытался с помощью LEN() или длины() функции в PostgreSQL он говорит, что функция Безразлично» t существует. – Madhusudan

0

Вы также можете использовать ниже SQL запросов:

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

здесь мы используем две последние цифры года от CURRENT_TIMESTAMP

Смежные вопросы