我们的Python CMS将一些日期值存储在通用"属性"表的varchar列中.其中一些日期稍后会移动到具有实际日期列的表中.如果CMS用户输入了无效日期,则在迁移时,当查询失败且出现"无效字符串日期"错误时,它不会被捕获.
如何使用Python确保放入CMS的所有日期都是有效的Oracle字符串日期表示?
如何使用Python确保放入CMS的所有日期都是有效的Oracle字符串日期表示?
我会稍微改变一下这个方法.让Python尽可能宽松地解析原始日期输入,然后以已知良好的表示形式输出日期.
dateutil的自由解析器可能是一个很好的起点:
import dateutil.parser d= dateutil.parser.parse('1/2/2003') d.strftime('%d-%b-%y')
我不确定'%d-%b-%y'实际上仍然是Oracle的正确日期格式,但它可能是类似的,理想情况下是四位数年份并且不依赖于月份名称.(陷阱:%b依赖于语言环境,因此可能会在非英语操作系统上返回不需要的月份名称.)也许"strftime('%Y-%m-%d')"后跟"TO_DATE(...,'YYYY) -MM-DD')"在Oracle端需要吗?