diadia

興味があることをやってみる。自分のメモを残しておきます。

特定の月だけが入ったレコードだけを取り出すことはできるか?

例えば6月をtimestampやdateのフィールドからselectで抽出できるか?

今まで列の値をwhereを使って=かlikeを使って取得してきた。dateやtimestampでwhere句を使う方法を知らないので、まずそれを調べてみようと思う。

参考:https://stackoverflow.com/questions/8863156/selecting-by-month-in-postgresql

上記の例ではちょうどpostgresqlを使ってtimestampまたはdate型の月を指定してselectする方法について議論している。
要するにEXTRACTを使えば解決できるようだ。 WHERE句にEXTRACTを用いる。

SELECT id, name, birthday FROM employee.person 
WHERE EXTRACT(MONTH FROM birthday) > 10;

https://www.postgresql.org/docs/9.1/functions-datetime.html

select userid, date, zahyo from table_a
WHERE EXTRACT(MONTH from table_a) = 6
conn = get_connection()
cur  = conn.cursor()
#8月のデータを取得したい
SELECT_SQL = """SELECT EXTRACT(month FROM date) FROM demo"""
SELECT_SQL = """SELECT * FROM demo WHERE EXTRACT(month FROM date) = 8"""
cur.execute(SELECT_SQL)
res = cur.fetchall()
print(res)