sql - IBM DB2 CAST AS VARCHAR 与 Python Pandas to_datetime 函数
问题描述
我有线
CAST(SURGERY.DTM AS VARCHAR(30)) AS appt_dt
在命中 IBM DB2 数据库的 SQL 文件中。由于各种原因,我必须转换为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
或根本没有。
所以这是我的问题:有没有办法更好地控制函数的格式
CAST
,或者有没有办法将结果读入熊猫?我对这两种方法都非常满意。
我对第二种方法的一个想法是以某种方式限制%H
and%M
选项以仅查看 2 个字符,但我不知道该怎么做,文档也没有告诉我怎么做。
蛮力方法是读取 csv 数据,搜索这些类型的字符串,然后用冒号替换前两个句点。日期解析器对此没有任何问题。但这将涉及我宁愿避免的额外处理步骤。
谢谢你的时间!
解决方案
Change your format string:
dt_string = '2020-06-09-13.15.00.000000'
pd.to_datetime(dt_string, format='%Y-%m-%d-%H.%M.%S.%f')
Correctly converts the string:
Timestamp('2020-06-09 13:15:00')
推荐阅读
- biztalk - BizTalk TypePolling 接收端口静默失败
- node.js - npm install --force 和 npm install --legacy-peer-deps 有什么区别?
- angular - 项目部署被 CORS 策略阻止
- python - Discord.py role.members 返回空列表
- html - 如何摆脱酒吧周围的白色边框
- shell - 用于在输出文本文件中将句子拆分为新格式的 Shell 脚本?
- javascript - 如何在 contenteditable div 中创建无法删除的单词(JavaScript)
- python - 为什么在执行 sklearn 分解模块中存在的 KernalPCA 方法时出现此错误
- typescript - 将@types/foo 定义与另一个导出(以及其他) foo 包的模块一起使用?
- java - 数据表多项选择素面