【问题标题】:how to subtract date from date from sql in python如何从python中的sql中减去日期
【发布时间】:2015-02-22 20:30:17
【问题描述】:

我运行一个 sql 查询,它返回格式为'2015-03-01T17:09:00.000+0000' 的日期我想从今天的日期中减去它。

我得到了今天的日期:

import datetime
now = datetime.datetime.now()

格式似乎不一致,我想不出一个标准化的格式。

【问题讨论】:

标签: python python-2.7 date-arithmetic


【解决方案1】:

您可以使用 datetime 模块中的 strptime 使用格式字符串从查询结果中获取与 python 兼容的日期时间。 (您可能需要稍微使用格式字符串以适应您的情况)

ts = '2015-03-01T17:09:00.000+0000' to a format string like
f = '%Y-%m-%dT%H:%M:%S.%f%z'
date_from_sql = datetime.datetime.strptime(ts, f)
now = datetime.datetime.now()
delta = date_from_sql - now

.000 可能是微秒(在格式字符串中用 %f 表示),+0000 是 utc 偏移量(在格式字符串中用 %z 表示)。查看更多格式选项:https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

查看此线程以获取示例:what is the proper way to convert between mysql datetime and python timestamp?

查看更多关于 strptime https://docs.python.org/2/library/datetime.html#datetime.datetime.strptime

【讨论】:

  • 谢谢,我阅读了资源,这很有意义,但我得到了错误:ValueError: unconverted data remains: .000+0000
  • .000 可能是微秒(在格式字符串中用 %f 表示),+0000 是 utc 偏移量(在格式字符串中用 %z 表示)。我已经更新了答案。
【解决方案2】:

在 Python 中获取两个日期时间对象之间的 delta 非常简单,只需将它们相减即可。

import datetime
d1 = datetime.datetime.now()
d2 = datetime.datetime.now()

delta = d2 - d1
print delta.total_seconds()

d2 - d1 返回一个 datetime.timedelta 对象,从中可以得到两个日期的总秒差。

关于日期的格式化,你可以阅读strings into datetime objectsdatetime objects into string here

您将了解 strftime() 和 strptime() 函数,使用它们您可以获得两个可以相互减去的日期时间对象。

【讨论】:

    猜你喜欢
    • 2018-04-11
    • 2016-10-30
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 2023-02-03
    • 2017-04-25
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多