我有一個包含多個欄位的 sql 表,包括(但不限于以下):member_id、visit_date(日期時間格式,例如:2016-01-01)、visit_yr_qtr(作為字串,例如:2016_Q1)、purchase_item(ID 號)、和 item_price(美元)。
我想提取這些欄位,但還要在輸出中包含 year_month(2016-1 月或 2016-01)作為新欄位。這是我試圖做但沒有成功的:
select member_id, visit_date, visit_yr_qtr, purchase_item, item_price,
EXTRACT(year_month, visit_date)
FROM <table name>
有人可以建議一種從輸出中的 visit_date 列中提取 year_month 的方法嗎?
uj5u.com熱心網友回復:
EXTRACT的語法是
提取(<date_or_time_part> FROM <date_or_time_expr>)
在<date_or_time_part>其中year_month
所以要得到yearmonth你需要2個提取物。
CONCAT(EXTRACT(year FROM visit_date),'-', LPAD(EXTRACT(month FROM visit_date), 2, 0))
一種更短的方法是使用帶有格式的TO_CHAR。
TO_CHAR(visit_date,'YYYY-MM')
uj5u.com熱心網友回復:
Luk 的回答很好,你可以使用YEAR 和 MONTH快捷功能,并使用||concat標記使其變小,以及LPAD:
SELECT
'2016-01-01'::date as visit_date,
CONCAT(EXTRACT(year FROM visit_date),'-', LPAD(EXTRACT(month FROM visit_date), 2, 0)) as way_1,
year(visit_date) || '-' || month(visit_date) as way2,
year(visit_date) || '-' || lpad(month(visit_date),2,'0') as way2_padded;
給予:
| VISIT_DATE | WAY_1 | 方式2 | WAY2_PADDED |
|---|---|---|---|
| 2016-01-01 | 2016-01 | 2016-1 | 2016-01 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/418680.html
標籤:
上一篇:在資料框中洗掉特定日期
下一篇:如何在java中決議這個日期?
