Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008从postgres中提取时间戳_Sql_Sql Server_Sql Server 2008_Postgresql_Etl - Fatal编程技术网

SQL Server 2008从postgres中提取时间戳

SQL Server 2008从postgres中提取时间戳,sql,sql-server,sql-server-2008,postgresql,etl,Sql,Sql Server,Sql Server 2008,Postgresql,Etl,我是sql server的新手,这是我的第一份etl工作。我试着做一些看起来相对简单的事情,但我已经被困了好几天了 起初,我只是在从我们的主postgres数据库中提取时间戳时遇到了问题,现在我将它们作为转换后的文本字符串提取,并使用数据转换步骤将它们转换为日期。如果有更好的方法来做这件事的话,我会非常感激被放在正确的方向上 我现在遇到的主要问题是,我有一个以下形式的查询: SELECT

我是sql server的新手,这是我的第一份etl工作。我试着做一些看起来相对简单的事情,但我已经被困了好几天了

起初,我只是在从我们的主postgres数据库中提取时间戳时遇到了问题,现在我将它们作为转换后的文本字符串提取,并使用数据转换步骤将它们转换为日期。如果有更好的方法来做这件事的话,我会非常感激被放在正确的方向上

我现在遇到的主要问题是,我有一个以下形式的查询:

                                    SELECT
                                        my_table.id,
                                        max(CASE WHEN to_id = 4 THEN stamp
                                                ELSE NULL END) AS date_pending,
                                        min(CASE WHEN to_id = 4 THEN stamp
                                                ELSE NULL END) AS first_date_pending,
                                        max(CASE WHEN to_id = 5 THEN stamp
                                                ELSE NULL END) AS date_sent,
                                        max(CASE WHEN to_id = 11 THEN stamp
                                                ELSE NULL END) AS date_accepted
                                    FROM my_table
                                    WHERE to_id IN (4, 5, 11)
                                    GROUP BY id
**完全公开:上面的查询是一个子查询,从我所读到的内容来看,它可能对驱动程序有影响,也可能没有影响

我遇到的问题是,我的数据转换步骤无法将这些戳记(即使转换为字符串)转换为日期。我得到以下错误:

Conversion from "DT_I8" to "DT_DBTIMESTAMP2" is not supported. 
似乎最大化和最小化日期改变了他们报告的类型

我似乎无法强制转换查询中的字段,因为sql server无法运行查询do到未知类型日期


我有点不知所措,不知道我现在应该做什么

我甚至尝试过使用函数来转换戳记,sql server在查询步骤中咆哮着说:OLE DB适配器无法在类型“DT_DBDATE”和“DT_I8”之间转换为“first_date_pending”。
create函数ts_to_date(timestamp)将日期返回为$$SELECT$1::date;$$语言SQL IMMUTABLE在NULL输入时返回NULL;创建函数ts_to_date(TIMESTAMPTZ)将日期返回为$$SELECT$1::date;$$语言SQL IMMUTABLE在NULL输入时返回NULL仍然不走运,我现在尝试在导入时将日期转换为字符串,但mssql仍然将其视为DT_I8