IBM DB2 CAST AS VARCHAR 与 Python Pandas to_datetime 函数

IBM DB2 CAST AS VARCHAR versus Python Pandas to_datetime Function

我有线

CAST(SURGERY.DTM AS VARCHAR(30)) AS appt_dt

在一个 SQL 文件中访问 IBM DB2 数据库。出于各种原因,我必须转换为 VARCHAR,因此省略 CAST 不是一个选项。问题是这个演员选择了一个非常糟糕的格式。结果出来是这样的:2020-06-09-13.15.00.000000。我们有四位数的年份,包括世纪、月份、月份。到目前为止,一切都很好。但是还有非常糟糕的小数点分隔的 24 小时小时、分钟,然后是带微秒的秒。我的目标是将这些日期快速读入 Python 中的 pandas 数据框,但我无法让 pandas 解析这种日期,大概是因为它获取了 13.15 小时,00.000000 分钟,然后几秒钟没有剩余。它出错了。我对解析器的尝试是这样的:

parser_ibm_db(date_str: str) -> pd.tslib.Timestamp:
    return pd.to_datetime(date_str, format='$Y-%m-%d-%H.%M.%S')

但它不起作用。选项 infer_datetime_format 也没有或什么都没有。

So here is my question: is there a way either to control the formatting of the CAST function better, or is there a way to read the result into pandas? I'd be perfectly happy with either approach.

我对第二种方法的一个想法是以某种方式限制 %H%M 选项以仅查看 2 个字符,但我不知道该怎么做以及文档不告诉我怎么做。

暴力破解的方法是读入csv数据,搜索这类字符串,将前两个句点替换为冒号。日期解析器对此没有任何问题。但这将涉及一个我宁愿避免的额外处理步骤。

感谢您的宝贵时间!

更改格式字符串:

dt_string = '2020-06-09-13.15.00.000000'
pd.to_datetime(dt_string, format='%Y-%m-%d-%H.%M.%S.%f')

正确转换字符串:

Timestamp('2020-06-09 13:15:00')