python - 时间未添加到 Python 中的日期对象

标签 python postgresql csv psycopg2

我正在使用 psycopg2 将 csv 文件中的值插入到 postgres 数据库中。每次从 csv 文件中读取新行时,我都需要将开始时间增加 6 小时。我正在尝试通过以下方式实现这一目标:

date_product_str = '2015-03-05 12:00:00'
date_product = datetime.datetime.strptime(date_product_str, "%Y-%m-%d %H:00:00").date()

date_valid = date_product
interval = datetime.timedelta(hours=6)

id_location=38
in_file = open("inform_values.csv", "r")


while True:
        line = in_file.readline()
        if not line: break
        tokens = line.split(",")
        for i in range (1, 140):
                cur.execute("INSERT INTO inform_tseries_data_basin_proc_fcst_prob_flow (date_product, date_valid, id_location, id_member, value) VALUES (%s, %s, %s, %s, %s)", (date_product, date_valid, id_location, i, tokens[i]))
                date_valid = date_valid + interval
                print date_valid
                conn.commit()


cur.close()
conn.close()

但这只是在每一步打印出 2015-03-05。当我将间隔设置为 1 天时:

interval = datetime.timedelta(days=1)

它按预期一天递增。为什么几个小时都不工作?

最佳答案

date 对象没有小时、分钟、秒或微秒的概念 - 只有年、月和日。在 date + timedelta 算法中 - 正如文档所说 - “timedelta.secondstimedelta.microseconds 被忽略。”

如果您需要计算小时数,则需要一个 datetime 对象。如果您从 date_product 初始化中删除尾随的 .date() 提取器,您将会拥有。

关于python - 时间未添加到 Python 中的日期对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37980560/

相关文章:

csv - 如何对 CSV 数据进行 curl POST?

python - 如何设置扭曲的日志记录级别?

sql - 在一组两种可能性中选择唯一行

postgresql - 如何求和

python - 将 python 字典写入 CSV 列 : keys to first column, 值到第二个

python - 如何使用 Python 删除/去除我的 csv 文件中的白色/空白行?

python - 如何找到与 python 中的值相关的键的数量?

python - 守护进程 python 脚本后找不到守护进程

javascript - Django 如何将点击的链接文本传递到另一个显示静态图像的 HTML 页面上的 URL?

postgresql - 将html插入数据库时​​如何解决引号问题?