2016-03-05 17 views
0

忍受我,因爲我沒有這個詞彙。我使用Navicat和postgresql將SAS日期轉換爲int。我已成功使用如何將sas日期格式轉換爲postgres(Amazon redshift)中的int?

DATEADD(day,round(field_name)::int,'19600101') -> where field_name = '-8705' stored 
as varchar(256) 

爲正數,但這不適用於負數(1960年1月1日以前)。理想情況下,有人從SAS日期轉換更好/更容易/更有效的方式,但我會很感激將這些負數轉換爲int的方式。我搜查了Amazon Redshift文檔,如果答案在那裏,我不理解它。如果可能,我從例子中學到最好

這個例子似乎是有前途的,但我無法弄清楚如何得到它爲我的情況下工作:

SELECT total_days 
, CAST(end_date AS timestamp) t_stamp 
, CAST(end_date AS date) final_date_time 
-- date(end_date) will not work as end_date is date already 
, TO_CHAR(TRUNC(end_date), 'MM/DD/YYYY') final_date 
FROM(
SELECT ROUND(1344444527/60/60/24)   total_days 
    , TO_DATE('01-01-1960','dd-mm-yyyy') start_date 
    , TO_DATE('01-01-1960','dd-mm-yyyy')+ (1344444527/60/60/24) end_date 
FROM dual 
) 

謝謝你,提前爲您的幫助!

+0

它爲什麼不起作用?你得到錯誤的結果或錯誤? –

+0

添加SAS標籤,這基本上是一個SAS問題。順便說一句,請添加您的輸入數據的樣本(或者它是一個SAS數據集?) – wildplasser

+0

你的SAS日期是什麼樣的,沒有任何處理? – Reeza

回答

0

它以原始格式返回數據,但我再次運行它檢查,現在它正在工作。我不知道爲什麼它最初不工作。可能是用戶錯誤。儘管感謝您的意見!

相關問題