sql-server - oracle时间戳6转换为sql server datetime2错误
问题描述
我正在使用 SSIS 将一些 oracle 数据转换为 sql server。我找到了这样的 Oracle 日期时间戳6
26-DEC-82 12.00.00.000000000 AM
将导致 SSIS 中的转换失败
错误:年、月和日参数描述了不可表示的
我认为这是因为 ssis 不知道是 2082 还是 1982,所以不知道如何转换。如何将 oracle 日期转换为年份为 yyyy 的日期?
更新:尝试了 Hadi 提到的 to_char 函数。我可以看到现在是 2682 年(其中大部分)。我添加了一张图片,其中显示了 to_char 和 plate_date 和 sold_date 列的原始列。如您所见,大多数年份都是 26xx,但有两个例外是 18xx。有人可以解释吗?
解决方案
在 SQL Server 中,数据类型“timestamp”与日期或时间无关。
Microsoft 已将其旧的“timestamp”数据类型重命名为“rowversion”,因为它只是一个 8 字节的数字,用于记录一系列“行更改”事件。
另一方面,Oracle 的“时间戳”确实是关于时间的,因为 Oracle 的“时间戳”扩展了它们的“日期”数据类型。更多在这里。
不幸的是,SQL Server 仍将“时间戳”识别为有效的数据类型名称。
所以,我怀疑你的错误信息可能与时间戳-时间戳同音词有关。
推荐阅读
- mysql - 如何正确使用rank over
- python - 每月迭代创建范围
- visual-studio - 当我在表达式中编码时如何显示特定字段的所有值
- oracle12c - SymmetricDS 3.12 连接到 Oracle 12c
- ag-grid - clear selected range cell values on clicking delete button
- java - mvn package verify 导致 maven-shade-plugin 执行两次
- angular - Angular:使用私有基础 href 包装组件
- java - 当`java myClass.java`找到时`java myClass`没有找到.class文件?(OpenJDK)
- oracle - 在 oracle 中调整查询
- python - 错误:使用正则表达式模式时在位置多次重复