sql – 无法理解隐式地如何将值转换为日期格式
|
当我检查我的NLS_DATE_FORMAT是DD-MM-RR. 考虑到带有日期列的mytable,当我执行以下语句时,它会抛出错误“ORA-01840:输入值不够长,不适合日期格式”,这是合理可以理解的. insert into mytable values('10'); //Error: reason understandable
那么为什么后面的语句在输入大小大于默认DATE格式大小的情况下有效. insert into mytable values('10AUGUST2016'); //reason not understandable
另外在这里我没有使用任何TO_DATE函数,我猜隐式转换正在发生? 解决方法String-to-Date Conversion Rules允许其他格式规则(不应用任何其他修饰符).所以:> MM也匹配MON和MONTH; 所以: SELECT TO_DATE( '10AUGUST2016','DD-MM-RR' ) FROM DUAL UNION ALL SELECT TO_DATE( '10AUGUST2016','DD-MON-RR' ) FROM DUAL UNION ALL SELECT TO_DATE( '10AUGUST2016','DD-MONTH-RR' ) FROM DUAL UNION ALL SELECT TO_DATE( '10AUG2016','DD-MM-RR' ) FROM DUAL UNION ALL SELECT TO_DATE( '10AUG2016','DD-MON-RR' ) FROM DUAL UNION ALL SELECT TO_DATE( '10AUG2016','DD-MONTH-RR' ) FROM DUAL; 全部生成日期2016-08-10T00:00:00. 您可以使用
然后: SELECT TO_DATE( '10-AUGUST-2016','FXDD-MM-RR' ) FROM DUAL; 给出:ORA-01858:找到一个非数字字符,其中数字是预期的,并且仅匹配找到精确模式匹配的位置(尽管RR仍将匹配RRRR).
是的,oracle隐式使用TO_DATE(’10AUGUST2016′,NLS_DATE_FORMAT)进行转换. 如果您使用: ALTER SESSION SET NLS_DATE_FORMAT = 'FXDD-MM-RR'; 然后你的插入将失败. (编辑:张家界站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 杀毒软件以后每日升级 江民实施“日升计划”
- sql-server – 从非sysadmin域用户拥有的SQL Agent作业运行
- sql – 搜索数字是否包含在表达式中:1-3,5,10-15,20
- 如何在我的sql数据库中存储一对多的关系? (MySQL的)
- SQL 2使用不同的过滤器计数
- 具有可变属性的多个产品类型的数据库设计
- sql-server – SQL Server遇到的前3个性能问题是什么?
- Firebase数据库不等于请求 – 替代解决方案(适用于iOS)
- 微软发布Office System 中文版11月13日正式推出
- 命令行 – 学习SQL艰难的方法 – 在SQL Lite 3中使用.db创建


