我有一个必须将日期字段插入varchar列的要求。我没有任何类型转换将记录直接插入表中。在一个环境中,它将插入为29-AUG-16,而在另一环境中,它将存储为29-08-2016。因此,我随后的数据处理失败。我期望两种环境下的数据都为DD-MON-RR。在这两种环境中,nls会话参数表中的nls格式均为DD-MON-RR。两种环境不同的原因是什么? 我尝试使用TO_CHAR(DATECOL,'DD-MON-RR')进行类型转换,但仍然以dd-mm-yyyy格式插入数据
答案 0 :(得分:2)
您可以使用TO_CHAR函数将日期转换为字符并将其插入varchar列。
与其简单地编写date_column,不如在插入查询中使用类似的内容
INSERT INTO date_tab VALUES(TO_CHAR(date_col, 'DD-MON-YY'))
答案 1 :(得分:0)
根据服务器默认值,客户端默认值和显式会话设置为每个会话设置NLS值。因此,如果要为所有会话使用标准格式,则必须在操作级别设置所需的NLS,以覆盖所有可能的(几乎不可预测的)NLS结果组合。在to_char
函数中,应将第三个参数(NLS)设置为所选的NLS日期格式。