Oracle 中的日期格式输出问题

Issue with date format output in Oracle

我有一个要求,我必须将日期字段插入到 varchar 列中。我直接将记录插入到 table 中,没有任何类型转换。在一个环境中,它作为 29-AUG-16 插入,在另一个环境中,它存储为 29-08-2016。因此,我对数据的后续处理失败了。我期望在这两种环境中数据都是 DD-MON-RR。在这两种环境中,nls 格式在 nls 会话参数 table 中都是 DD-MON-RR。两种环境差异的原因是什么? 我尝试使用 TO_CHAR(DATECOL, 'DD-MON-RR' ) 进行类型转换,但数据仍以 dd-mm-yyyy 格式插入

您可以使用TO_CHAR函数将日期转换为字符并将其插入varchar列。

而不是简单地写 date_column ,你应该在你的插入查询中使用这样的东西

INSERT INTO date_tab VALUES(TO_CHAR(date_col, 'DD-MON-YY'))

NLS 值是根据服务器默认值、客户端默认值和显式会话设置为每个会话设置的。因此,如果您想要所有会话的标准格式,您必须在操作级别设置所需的 NLS 以覆盖所有可能的(几乎不可预测的)NLS 结果组合。在 to_char 函数中,您应该将第三个参数 (NLS) 设置为您选择的 NLS 日期格式。