SQL Server 2008从postgres中提取时间戳
我是sql server的新手,这是我的第一份etl工作。我试着做一些看起来相对简单的事情,但我已经被困了好几天了 起初,我只是在从我们的主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
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