请耐心等待,因为我没有让词汇失效。我正在使用带有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
)
先谢谢你的帮助!!
答案 0 :(得分:0)
它以原始格式返回数据,但我再次运行它以检查它现在它是否正常工作。我不知道为什么它最初没有工作。可能是用户错误。感谢您的评论!!