【发布时间】:2019-08-25 03:30:05
【问题描述】:
我有一个要求,我必须将日期字段插入 varchar 列。我直接将记录插入表中,没有任何类型转换。在一个环境中,它插入为 29-AUG-16,而在另一个环境中,它存储为 29-08-2016。因此,我对数据的后续处理失败了。我期望在这两种环境中的数据都是 DD-MON-RR。在这两种环境中,nls 格式在 nls 会话参数表中都是 DD-MON-RR。两种环境不同的原因是什么? 我尝试使用 TO_CHAR(DATECOL, 'DD-MON-RR') 进行类型转换,但数据仍以 dd-mm-yyyy 格式插入
【问题讨论】:
-
“将日期字段插入 varchar 列的要求”。只是想知道,为什么?
-
因为我们使用日期创建主键并与其他关键字段连接。
-
您正在创建一个额外的列,其中包含来自其他列的连接值 - 并将其作为主键;而不是在原始列中使用复合主键?似乎有点奇怪......无论如何,您不应该依赖 NLS 设置,并且您实际执行插入的方式可能会忽略它们 - 例如,您从中获取日期值(它可能是早于你认为?),以及正在发生什么绑定或显式/隐式转换。
-
请包含完整的插入语句,以及表的 DDL,或者至少包含列的实际数据类型和您正在使用的任何变量。