使用CONCAT功能返回适当的值

问题描述:

好吧,说我正在使用CONCAT功能,对吧?使用CONCAT功能返回适当的值

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

接下来,我subqueried做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:1st参数的类型为int64,但是预期的类型为字符串或字节。

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

from question: Obviously, start_month would return 02 and start_year returns 2016.

都能跟得上 - 他们将回到2年和2016年respectivelly和整数不是作为字符串 - 看到更多关于MONTH()和/或Date and time functions

所以,你应该投月份和年份值STRING

对于例如,
CONCAT(STRING(START_MONTH), '/',STRING(START_YEAR))

The better way to do this is as below

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

看到here更多细节

is there an easy way I can convert the numerical months to their actual names (i.e. 02 becomes February)?

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

重要的SO - 你可以'标志使用上贴出答案的左边打钩,投票低于可接受的answer'。看到http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235为什么它很重要!对答案投票也很重要。表决有用的答案。还有更多......当某人回答你的问题时,你可以查看该怎么做 - http://*.com/help/someone-answers。 –