我是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.
似乎max'ing和min'ing日期会改变他们报告的类型...
我似乎无法在查询中强制转换字段,因为sql server无法将查询执行到未知类型DATE。
我有点失落,并且不知道我此刻应该做些什么。