2012-04-18 70 views
6

Tôi cần lấy hai số cuối của một số nguyên. Mỗi phần tử được đặt trong các bảng đều là một năm đầy đủ. YYYY và tôi chỉ muốn hai chữ số cuối cùng, do đó tất cả các lĩnh vực hiển thịSQL lấy hai số cuối của số nguyên

YEAR 
---- 
09 
00 
89 

nơi lĩnh vực khởi tạo là đã

YEAR 
---- 
2009 
2000 
1989 

EDIT: Tôi nhận đơn khiếu nại nói,

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

khi tôi thử

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

Trả lời

9

Postgres đã mượn (hoặc được thừa kế) nhà điều hành mô đun từ 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 
    ; 

Kết quả:

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

Tôi không biết nếu có một hàm LEN trên Postgres, nhưng nếu có, hãy thử này:

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

khi tôi cố gắng sử dụng len() hay hàm length() trong postgresql nó nói rằng chức năng doesn' t tồn tại. – Madhusudan

0

Bạn cũng có thể sử dụng dưới đây truy vấn SQL:

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

ở đây chúng tôi sử dụng hai chữ số cuối cùng của năm từ current_timestamp

Các vấn đề liên quan