1

我正在编写一个 VB.NET 应用程序,它将数据从 MS SQL 数据库表移动到 Oracle 数据库表。

MS SQL DB 中的记录具有空日期。Oracle db 表列设置为允许空值。当我运行 VB.NET 应用程序并单步执行该应用程序时,一切正常,直到记录为空日期。VB.NET 将空日期显示为“12:00 AM”,没有日期,只有时间。

我得到的 Oracle 错误是:ORA-01847: day of month must be between 1 and last day of month

这是从 MS SQL DB 中提取日期的 SQL:

convert(varchar(10),DATE_COLUMN,101) end as 'DATE_COLUMN'

这是我用于插入 Oracle DB 的 PL/SQL:

to_date('" & tmp_DATE_COLUMN & "','mm/dd/yyyy')

在此处输入图像描述

4

1 回答 1

2

看起来你的tmp_something_DATE变量是 type Date。问题是它不能将NULL/Nothing值存储在Date变量中。如果您尝试将 a 分配Date给 Nothing,它实际上是分配给Date.MinValue,等于#12:00:00 AM#。您需要Nullable(Of Date)DataTable直接使用列值。

于 2013-02-05T15:21:07.670 回答