You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ConnectorX从Oracle数据库获取完整DateTime类型数据的方法咨询

如何通过ConnectorX从Oracle获取完整的Datetime数据

你遇到的问题是ConnectorX默认对Oracle的DATE类型解析时只保留日期部分,而Oracle的DATE类型本身包含完整的日期和时间信息。可以通过以下两种方法解决:

方法1:指定类型映射参数(推荐)

在调用cx.read_sql时,通过type_map参数强制将Oracle的DATE类型映射到包含时间的datetime类型,完整保留时间部分:

import connectorx as cx

# 构建Oracle连接URL
conn_str = "oracle://<用户名>:<密码>@<主机>:<端口>/<服务名>"
# 你的查询语句
sql_query = "SELECT * FROM your_target_table"

# 定义类型映射:将Oracle的DATE类型映射为pandas的datetime64[ns]
type_mapping = {
    "DATE": "datetime64[ns]"
}

# 读取数据并应用类型映射
df = cx.read_sql(conn_str, sql_query, type_map=type_mapping)

# 验证后保存为Parquet
df.to_parquet("output_with_full_datetime.parquet")

这个方法无需修改SQL语句,直接通过ConnectorX的参数控制类型解析,是最简洁的解决方案。

方法2:在SQL查询中显式转换

如果上述方法不生效,可以在查询时显式将DATE列转换为包含时间的格式,再读取:

SELECT 
    id,
    name,
    -- 显式保留时间部分
    TO_CHAR(datetime_col, 'YYYY-MM-DD HH24:MI:SS') AS datetime_col,
    other_col
FROM your_target_table

读取后将字符串列转换为datetime类型:

import pandas as pd

df["datetime_col"] = pd.to_datetime(df["datetime_col"], format="%Y-%m-%d %H:%M:%S")

这种方法需要修改SQL语句,适合特殊场景下使用。

内容的提问来源于stack exchange,提问作者MPenner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:30:58