SQL getting the last two digits of integers

I need to get the last two digits of an integer. Each element placed in the tables comes as a full year, i.e. YYYY , and I only need the last two digits, so all the fields show

 YEAR ---- 09 00 89 

where the initialy field was

 YEAR ---- 2009 2000 1989 

EDIT: I get a complaint saying:

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

when i try

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

+6
source share
4 answers

Postgres borrowed (or inherited) the module operator from 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 ; 

Result:

 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) 
+10
source
 select substring(CAST(2012 as CHAR(4)), 3, 2) 
+3
source

I don't know if there is a LEN function in Postgres, but if so, try the following:

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

You can also use the below SQL query:

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

here we use the last two digits of the year from current_timestamp

0
source

Source: https://habr.com/ru/post/913502/


All Articles