2014-02-20 50 views
0

我試圖將日期格式存儲爲m/d/yyyy爲'yyyymmdd'字符格式,而不需要在每次使用列時轉換日期列我的查詢。將日期轉換爲SQL中的字符格式

目前我正在鑄造和格式化日期爲字符:((cast(cast(invitation_date as CHAR(8)) as date format 'YYYYMMDD'))

有沒有辦法將數據列轉換一次並在查詢中稍後調用轉換後的字符值?

我在Aqua Data Studio 13.0.3中使用Teradata。

+0

源列是DATE還是CHAR? – dnoeth

+0

@dnoeth:源列invitation_date存儲爲十進制(長度爲8)。 –

回答

0

如果源是一個小數年月日,你可以做

CAST(invitation_date - 19000000 AS DATE) AS newcol 

的Teradata允許在任何地方使用的別名,所以你可以簡單地做

WHERE newcol > DATE 

當然最好的情況下會b e在加載期間將這些列更改爲DATE。

+0

非常感謝@dnoeth,效果很好! –

0
select to_char(field, 'yyyy-mm--dd hh:mm:ss') from table; 
+0

感謝您的想法,但它沒有奏效。 '從表中選擇invitationdate(field,'yyyymmdd');'導致出現以下錯誤:「語法錯誤:數據類型」字段「與定義的類型名稱不匹配」。 –

1

導航到文件 - >選項 - >結果格式 - > Teradata。然後選擇數據類型Date並輸入yyyyMMdd。您的結果集現在將返回指定的日期格式。讓我知道這是否會解決您的問題。

enter image description here

enter image description here

+0

這不是我想要實現的,因爲它們的方式日期存儲在不同的表中。有時日期以小數形式存儲,有時以日期或字符串形式存儲。 –

0

你不應該把它這個樣子,這是行不通的:

select invitationdate(field, 'yyyymmdd') 

試試這個:

SELECT to_char(column_date, 'yyyy/mm/dd') from table; 

爲 「人」 之稱。請注意不良內容(_);不是這個(-)之一。

0

這是一個較長的,但在某種程度上更簡單的方法,工程

選擇 yourdate ,投((提取物(一年yourdate)* 100 +提取物(一個月yourdate))* 100 +提取物(天from yourdate)as char(8))as yyyymmdd from ...

相關問題