2015-06-26 59 views
0

我正在製作一個簡單的SQL UDF,以便從char/varchar轉換爲時間。 因爲它被認爲是通用的東西,我想用戶指定的格式輸入他的,所以我可以只使用類似在SQL UDF中傳遞格式

cast(user_time as time(0) format user_format) 

,但它不工作。 我想知道是否有可能使用格式作爲UDF參數,如果是這樣,它應該如何在這個演員中使用。我可以分開閱讀格式並使時間匹配,但如果有更簡單的方法,我寧願避免它。

只是爲了澄清,我使用的是Teradata 14,而且我必須使用SQL,所以C中的UDF對我來說不是一個真正的選擇。 在此先感謝

+1

你將不得不使用動態SQL在你的UDF。編輯:不知道你是否可以在udf中使用動態sql,也許只能在存儲過程中使用。 – Andrew

回答

1

您無法將FORMAT作爲參數傳遞給CAST。

你也許可以用TO_TIMESTAMP來做到這一點,但爲什麼你需要一個UDF呢?

myUDF('12:34:45', 'hh:mi:ss') 

並不比舊式的Teradata科協要短得多:

hh:mi:ss' (time(0), FORMAT 'hh:mi:ss') 
+0

這是公司政策。一些將要使用它的用戶並不熟悉Teradata或任何類型的編程,因此我們試圖儘可能使用戶儘可能方便,即使這意味着在UDF後面隱藏了一個to_timestamp。並感謝您回答我的問題 – htcoelho