在.Net查询转换为字符串的过程中,Oracle DATE无效

时间:2019-05-15 16:10:33

标签: .net oracle date type-conversion recordset

我有一个在大表上查询的CRecordset对象。 查询是标准

SELECT colA, colB, ... FROM tabA LEFT OUTER JOIN tabB ON ... WHERE ... ORDER BY ...

我用

my_recordset->GetFieldValue ((short) the_column_rank, my_cstring) ;

获得我需要的价值。该代码运行了大约一个小时,读取了大约200万行,然后大约完成了一半,这给了我一个例外,然后崩溃了。异常显示为“无效的日期时间格式。”。

我手动打开了基座,以查看特定行的状态。我还查询了该列的元数据;

SELECT * FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME LIKE 'tabA'
AND COLUMN_NAME LIKE 'date_column'

赋予data_type为'DATE',所以我假设它不是时间戳或其他东西。 由于我在读取该字段之前的其他字段,因此可以精确地确定行,因此我也对其进行了查询;

SELECT date_column
FROM tabA LEFT JOIN tabB ON ...
WHERE conditions_to_get_the_one_row

30/11/02,也就是我想要的。

现在只有sqldeveloper.exe显示它。在我使用GetFieldValue的过程中,值转换为字符串。所以我问了这个

SELECT date_column,
CAST (date_column AS VARCHAR(100)) AS date_txt,
to_char(date_column, 'DD-MM-YYYY') AS date_chr
FROM tabA LEFT JOIN tabB ON ...
WHERE conditions_to_get_the_one_row

显示30/11/02 00/00/00 00-00-0000,也就是我不想要的。而且男孩,我不知道这是怎么回事。

我尝试了各种值;

SELECT DISTINCT date_column,
CAST (date_column AS VARCHAR(100)) AS date_txt,
to_char(date_column, 'DD-MM-YYYY') AS date_chr
FROM tabA LEFT JOIN tabB ON ...
WHERE standard_conditions
ORDER BY date_txt ASC

但只有该日期才有此问题(第二行及以后的所有三个值都描述了同一日期)。为什么会这样呢?那么,如何查询该字段,以便始终获得具有正确DMY值的结果(作为字符串)?

({EXTRACT (YEAR FROM date_column)对于那一行返回0,其他所有内容都正确。)

0 个答案:

没有答案