您可以“以格式插入日期”。日期具有内部表示形式,它们始终具有所有日期/时间组成部分,然后可以根据需要进行格式化以进行显示。
您作为YYYYMM生成的字符串已通过插入隐式转换为日期,因为这是目标列的数据类型。该隐式转换正在使用您的NLS设置,并且因此期望使用更长的值来匹配NLS日期格式。您的字符串与该隐式格式不匹配,这会导致您看到错误。
如果您只对年份和月份感兴趣,那么可以得到的最接近的结果是在当月的第一天午夜存储
trunc:
INSERT INTO CS_LOG(NAME, ID, C_DATE)Select MAX(ML.NAME), ML.ID, TRUNC(CHK_DATE,'MM')from D_ID ML,CS_LOG MDWHERe ML.NAME != MD.NAME and ML.ID != MD.IDand MD.C_DATE = LAST_DAY(sysdate)GROUP BY ML.ID,C_DATE;
我也删除了多余的
to_date电话。您也应该考虑切换到ANSI连接语法。
然后,您可以通过
c_date查询将其格式化为YYYYMM以便在查询时显示
to_char。



