如何在postgres(Amazon redshift)中将FROM sas date format转换为int?

时间:2016-03-05 06:31:51

标签: sql postgresql sas amazon-redshift

请耐心等待,因为我没有让词汇失效。我正在使用带有postgresql的Navicat将SAS日期转换为int。我已成功使用

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

对于正数,但这对负数不起作用(1960年1月1日之前)。理想情况下,某人有更好/更容易/更有效的方式来转换SAS日期,但我将很感激将这些负数转换为int的方法。我搜索了亚马逊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
)

先谢谢你的帮助!!

1 个答案:

答案 0 :(得分:0)

它以原始格式返回数据,但我再次运行它以检查它现在它是否正常工作。我不知道为什么它最初没有工作。可能是用户错误。感谢您的评论!!