使用CONCAT函数返回正确的值

时间:2016-03-30 15:06:02

标签: google-bigquery

好的,所以说我使用的是CONCAT功能,对吧?

所以我在一个名为start_date的字段中有一个日期。看起来像2016-02-07。

接下来,我断言要做MONTH(start_date)AS start_month和YEAR(start_date)作为start_year。显然,start_month将返回02,start_year将返回2016.

现在我可以说我想将这两者结合起来,所以它说02/2016。如果我只是这样做:

CONCAT(' start_month',' /',' start_year')它会返回start_month / start_year,如果我执行CONCAT(start_month,' /',start_year)它返回错误:CONCAT:第一个参数的类型为int64,但是期望的类型字符串或字节。

那么我做错了什么,我该如何解决这个问题呢?另外,有一种简单的方法可以将数字月份转换为实际名称(即02变为二月)?如果没有一个简单的方法,那就没什么大不了的了。

1 个答案:

答案 0 :(得分:2)

  

问题:显然,start_month会返回02和start_year   返回2016年。

不 - 他们将分别返回2和2016以及整数而不是字符串 - 请参阅MONTH()和/或Date and time functions

上的详情

因此,您应该将月份和年份值投放到STRING

例如,
CONCAT(STRING(start_month),' /',STRING(start_year))

  

更好的方法是

SELECT STRFTIME_UTC_USEC('2016-02-07', "%m-%Y")

有关详细信息,请参阅here

  

有一种简单的方法可以将数字月转换为它们的数字   实际名称(即02变为二月)?

SELECT STRFTIME_UTC_USEC('2016-02-07', "%B")