CONCAT 从日期开始的年份和月份并添加自定义日期
CONCAT year and month from date and add custom day
我正在尝试连接日期的年份和月份,并在 Google bigQuery 中添加自定义日期。这可能吗?
我的问题
SELECT
CONCAT(((EXTRACT(YEAR FROM reportdt)), '-', (EXTRACT(MONTH FROM reportdt)), '01')
) AS
yo,
brandnm,
EXTRACT(YEAR FROM reportdt) as the_year,
EXTRACT(MONTH FROM reportdt) as the_month
FROM table
WHERE reportdt BETWEEN '2018-05-01' AND '2018-11-30'
我的错误:
"No matching signature for function CONCAT for argument types: STRUCT<INT64, STRING, INT64>. Supported signatures: CONCAT(STRING, [STRING, ...]); CONCAT(BYTES, [BYTES, ...]) at [2:1]"
的预期结果
SELECT<br>
CONCAT(((EXTRACT(YEAR FROM reportdt)), '-', (EXTRACT(MONTH FROM reportdt)), '01') AS yo
2018-05-01
请帮忙!
使用 DATE_TRUNC(reportdt, MONTH)
代替
因此您的查询将如下所示
#standardSQL
SELECT
DATE_TRUNC(reportdt, MONTH) AS yo,
brandnm,
EXTRACT(YEAR FROM reportdt) AS the_year,
EXTRACT(MONTH FROM reportdt) AS the_month
FROM `project.dataset.table`
WHERE reportdt BETWEEN '2018-05-01' AND '2018-11-30'
如果出于某种原因您必须在此处使用 CONCAT - 请参阅下文
#standardSQL
SELECT
CONCAT(CAST((EXTRACT(YEAR FROM reportdt)) AS STRING), '-', CAST((EXTRACT(MONTH FROM reportdt)) AS STRING), '-01') AS yo,
brandnm,
EXTRACT(YEAR FROM reportdt) AS the_year,
EXTRACT(MONTH FROM reportdt) AS the_month
FROM `project.dataset.table`
WHERE reportdt BETWEEN '2018-05-01' AND '2018-11-30'
您可以尝试使用 CAST()
SELECT
CONCAT((CAST((EXTRACT(YEAR FROM reportdt)) as STRING), '-', CAST((EXTRACT(MONTH FROM reportdt)) as STRING), '01')
) AS
yo,
brandnm,
EXTRACT(YEAR FROM reportdt) as the_year,
EXTRACT(MONTH FROM reportdt) as the_month
FROM table
WHERE reportdt BETWEEN '2018-05-01' AND '2018-11-30'
我正在尝试连接日期的年份和月份,并在 Google bigQuery 中添加自定义日期。这可能吗?
我的问题
SELECT
CONCAT(((EXTRACT(YEAR FROM reportdt)), '-', (EXTRACT(MONTH FROM reportdt)), '01')
) AS
yo,
brandnm,
EXTRACT(YEAR FROM reportdt) as the_year,
EXTRACT(MONTH FROM reportdt) as the_month
FROM table
WHERE reportdt BETWEEN '2018-05-01' AND '2018-11-30'
我的错误:
"No matching signature for function CONCAT for argument types: STRUCT<INT64, STRING, INT64>. Supported signatures: CONCAT(STRING, [STRING, ...]); CONCAT(BYTES, [BYTES, ...]) at [2:1]"
的预期结果
SELECT<br>
CONCAT(((EXTRACT(YEAR FROM reportdt)), '-', (EXTRACT(MONTH FROM reportdt)), '01') AS yo
2018-05-01
请帮忙!
使用 DATE_TRUNC(reportdt, MONTH)
代替
因此您的查询将如下所示
#standardSQL
SELECT
DATE_TRUNC(reportdt, MONTH) AS yo,
brandnm,
EXTRACT(YEAR FROM reportdt) AS the_year,
EXTRACT(MONTH FROM reportdt) AS the_month
FROM `project.dataset.table`
WHERE reportdt BETWEEN '2018-05-01' AND '2018-11-30'
如果出于某种原因您必须在此处使用 CONCAT - 请参阅下文
#standardSQL
SELECT
CONCAT(CAST((EXTRACT(YEAR FROM reportdt)) AS STRING), '-', CAST((EXTRACT(MONTH FROM reportdt)) AS STRING), '-01') AS yo,
brandnm,
EXTRACT(YEAR FROM reportdt) AS the_year,
EXTRACT(MONTH FROM reportdt) AS the_month
FROM `project.dataset.table`
WHERE reportdt BETWEEN '2018-05-01' AND '2018-11-30'
您可以尝试使用 CAST()
SELECT
CONCAT((CAST((EXTRACT(YEAR FROM reportdt)) as STRING), '-', CAST((EXTRACT(MONTH FROM reportdt)) as STRING), '01')
) AS
yo,
brandnm,
EXTRACT(YEAR FROM reportdt) as the_year,
EXTRACT(MONTH FROM reportdt) as the_month
FROM table
WHERE reportdt BETWEEN '2018-05-01' AND '2018-11-30'