2016-03-30 62 views
1

好吧,說我正在使用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月份)?如果不是一個簡單的方法,它不是一個大問題。

回答

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://stackoverflow.com/help/someone-answers。 –