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

如何在psycopg2中正确查询并将日期时间转为可写入谷歌表格的格式

解决psycopg2查询结果中日期时间对象转字符串的问题

有两种可行的解决方式,你可以根据需求选择:

方式一:在SQL查询中直接格式化(推荐)

利用PostgreSQL的内置函数to_char,直接在查询时将日期、时间类型转为目标格式的字符串,这样获取到的结果无需额外处理:

修改后的查询代码:

with connection.cursor() as cursor_6:
    query = """
        SELECT 
            to_char(date, 'YYYY-MM-DD'),
            to_char(time, 'HH24:MI:SS'),
            source, 
            object, 
            hostname, 
            mac_address, 
            serial_number, 
            worker, 
            owner, 
            redirect, 
            plata_no_repair, 
            plata_removed, 
            model 
        FROM chronology_filter;
    """
    cursor_6.execute(query)
    chronology_filter = cursor_6.fetchall()
  • to_char(date, 'YYYY-MM-DD')将日期转为年-月-日格式的字符串
  • to_char(time, 'HH24:MI:SS')将时间转为24小时制的时:分:秒格式的字符串

方式二:在Python中处理查询结果

如果不想修改SQL,可以遍历查询结果,对每个元素的类型进行判断,将datetime.date和datetime.time对象转为字符串:

修改后的代码:

from datetime import date, time

with connection.cursor() as cursor_6:
    cursor_6.execute("SELECT date, time, source, object, hostname, mac_address, serial_number, worker, owner, redirect, plata_no_repair, plata_removed, model FROM chronology_filter;")
    chronology_filter = cursor_6.fetchall()

# 处理结果
processed_results = []
for row in chronology_filter:
    processed_row = []
    for item in row:
        if isinstance(item, date):
            processed_row.append(str(item))  # 转为'YYYY-MM-DD'格式
        elif isinstance(item, time):
            processed_row.append(str(item))  # 转为'HH:MM:SS'格式
        else:
            processed_row.append(item)
    processed_results.append(tuple(processed_row))  # 保持元组格式,也可转成列表

如果需要自定义格式,可替换为strftime方法,比如item.strftime('%Y-%m-%d')(日期)、item.strftime('%H:%M:%S')(时间)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:46:04