场景
日期值存的是10位字符串,如2020-02-01,sql筛选时需要选1年以内的。
select * from t_user
where
to_date(app_date ,'yyyy-MM-dd') > sysdate-360
查看日志发现报错:
ORA-01839: date not valid for month specified
解决方案
这个问题一般是因为该日期不存在,所以解析的时候失败。
如果超过了31号,那么还好定位,会报错:
月份日的值必须介于1和当月最后一日之间。
但是如果是31日之内,例如02-29这样的数据,是比较隐蔽的,也不容易查找,会报错:
指定月份的日期无效。
我将符合条件的日期先全部拉出来,然后分批执行,报错的话,就继续缩小范围。
select to_date('2020-07-16','yyyy-MM-dd') from dual union
select to_date('2020-05-21','yyyy-MM-dd') from dual union
select to_date('2020-07-16','yyyy-MM-dd') from dual
最终确定,有个错误日期,2020-06-31,这个日期根本不存在,坑人。
修改为正确日期即可。
最后不要忘了,把其他的日期也跑一遍,确保没有其他的错误日期。
hive 指定资源 跑sql hive创建数据库指定路径
DDL语句定义1,创建数据库 2,查询数据库 3,修改数据库 4,删除数据库 5,创建表 6,分区表 7,修改表 8,删除表1,创建数据库
1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db。hive (default)> create database db_hive;2)避免要创建的数据库已经存在错误,增加 if not exis
python 操作word 表格参数 python获取word表格
演示如下. 两个简单的word文档, 各有一个表格:读取文档中的表格到列表(为演示只对单列表格操作):import docx
def 取表格(文件名):
文件 = docx.Document(文件名)
首个表 = 文件.tables[0]
值 = []
for 行 in 首个表.rows:
for 格 in 行.cells:
值.append(格.text)
print(文件名 + " ->