好的,所以说我使用的是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变为二月)?如果没有一个简单的方法,那就没什么大不了的了。
答案 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")