忍耐一下,因为我还没有掌握这些词汇。我正在使用 Navicat 和 postgresql 将 SAS 日期转换为 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