2016-11-02 3 views
1

これは元のテーブルPostgreSQLはちょうど月のみ表示することを拒否し、年間

"facultyid","courseid","datequalified" 
2143,"ISM 3112","9/1988" 
2143,"ISM 3113","9/1988" 
3467,"ISM 4212","9/1995" 
3467,"ISM 4930","9/1996" 
4756,"ISM 3112","9/1991" 
4756,"ISM 3113","9/1991" 

CREATE TABLE qualified (
    facultyid integer NOT NULL, 
    courseid character varying(16) NOT NULL, 
    datequalified character varying(16), 
    dq2 date 
); 


ALTER TABLE qualified OWNER TO postgres; 

-- 
-- TOC entry 2136 (class 0 OID 16441) 
-- Dependencies: 190 
-- Data for Name: qualified; Type: TABLE DATA; Schema: class_scheduling_01; Owner: postgres 
-- 

INSERT INTO qualified (facultyid, courseid, datequalified, dq2) VALUES (3467, 'ISM 4212', '9/1995', '1995-09-01'); 
INSERT INTO qualified (facultyid, courseid, datequalified, dq2) VALUES (4756, 'ISM 3112', '9/1991', '1991-09-01'); 
INSERT INTO qualified (facultyid, courseid, datequalified, dq2) VALUES (2143, 'ISM 3113', '9/1988', '1988-09-01'); 
INSERT INTO qualified (facultyid, courseid, datequalified, dq2) VALUES (4756, 'ISM 3113', '9/1991', '1991-09-01'); 
INSERT INTO qualified (facultyid, courseid, datequalified, dq2) VALUES (2143, 'ISM 3112', '9/1988', '1988-09-01'); 
INSERT INTO qualified (facultyid, courseid, datequalified, dq2) VALUES (3467, 'ISM 4930', '9/1996', '1996-09-01'); 

である私は、月と年で、値を格納する方法を知りませんでしたので、私はvarchar型のタイプを使用することにしました。そこから、私は日付クエリーコマンドを実行するかどうか決めました。それを日付から文字列に変換する必要がありました。 1つの質問は、どの教員IDが1991年以降の日付に関連付けられているかを調べることです。

次のto_date関数を使用して、文字列を日付に変換しました: UPDATE修飾SET dq2 = to_date(datequalified、 'MM \ YYYY ')

DQ2列には、次のように出力をした:

dq2 
1995-09-01 
1991-09-01 
1988-09-01 
1991-09-01 
1988-09-01 
1996-09-01 

それだけで年と月としてDQ2出力を取得し、まだ、日付関連のクエリを許可することは可能ですか?

+1

日付の一部のみを保持している何のデータ型はありません。唯一の方法は、検索と処理時に文字列またはフィルタに変換することです。 – FDavidov

答えて

1
SELECT to_char(your_date, 'YYYY-MM') AS month_format 
FROM YourTable 
+0

ありがとうございました!私はそこからdq2カラムを無視する仮想テーブル/ビューを作成し、永久にdq2カラムをmonth_formatとして作成すると思います。言っビューの適格日付列にクエリを実行する資格 – gimmegimme

+0

FROMです。month_format AS SELECT TO_CHAR(DQ2、 'MM/YYYY'): SELECT * TO_DATE(datequalified、 'MMのYYYY')> = 'qualified_view1 FROM '01/01/1993'; – gimmegimme

+0

はい、データはまだ日が「01」である通常の「日付」です –

関連する問題