从日期列中提取 year_month 以及 sql table 中的其他列
extract year_month from a date column along with other columns in a sql table
我有一个包含多个字段的 sql table,包括(但不限于以下):member_id、visit_date(日期时间格式,例如:2016- 01-01)、visit_yr_qtr(字符串形式,例如:2016_Q1)、purchase_item(身份证号码)和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 的方法吗?
EXTRACT 的语法是
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 with a format。
TO_CHAR(visit_date,'YYYY-MM')
Luk的回答很好,可以用YEAR and MONTH shortcut functions, and use the ||
concat token to make it all smaller, and 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
WAY2
WAY2_PADDED
2016-01-01
2016-01
2016-1
2016-01
我有一个包含多个字段的 sql table,包括(但不限于以下):member_id、visit_date(日期时间格式,例如:2016- 01-01)、visit_yr_qtr(字符串形式,例如:2016_Q1)、purchase_item(身份证号码)和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 的方法吗?
EXTRACT 的语法是
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 with a format。
TO_CHAR(visit_date,'YYYY-MM')
Luk的回答很好,可以用YEAR and MONTH shortcut functions, and use the ||
concat token to make it all smaller, and 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 | WAY2 | WAY2_PADDED |
---|---|---|---|
2016-01-01 | 2016-01 | 2016-1 | 2016-01 |