【问题标题】:How to compare the 2 datetime values if they are in str/text format?如果它们是 str/text 格式,如何比较 2 个日期时间值?
【发布时间】:2018-11-21 06:25:35
【问题描述】:

归咎于我糟糕的设计。 我将日期时间的列数据类型作为文本。 现在,如果一个大于另一个,我需要比较 (

值采用“YYYY-MM-DD HH:MM:SS”格式

【问题讨论】:

  • 您使用的是哪个数据库?
  • 我正在使用 sqlite3
  • 例如,如果 datetime 小于 6 周,我实际上是在尝试删除几行。
  • 您应该能够截断您的字符串以仅使用“YYYY-MM-DD” - 然后"2018-06-08" < "2018-06-04" 的字符串比较应该可以工作。您还需要将目标日期“计算”为字符串...

标签: python sql python-3.x sqlite


【解决方案1】:

一种解决方案是使用pandas.to_datetime 从字符串中获取Timestamp 对象,这样比较容易得多。示例:

import pandas as pd

date1 = pd.to_datetime("1991-01-20 05:00:00")
date2 = pd.to_datetime("2005-10-01 15:12:00")
print(date1 < date2) # True

【讨论】:

    【解决方案2】:

    您可以使用time.mktime(parse(ts).timetuple()),其中“ts”是您的时间戳字符串。

    例如:

    >>> ts1 = datetime.datetime.now().strftime("%Y-%M-%d %I:%M:%S")
    >>> ts2 = datetime.datetime.now().strftime("%Y-%M-%d %I:%M:%S")
    >>>
    >>> ts1
    '2018-02-21 03:02:58'
    >>> ts2
    '2018-03-21 03:03:11'
    >>>
    >>> time.mktime(parse(ts1).timetuple())
    1519162378.0
    >>>
    >>> time.mktime(parse(ts2).timetuple())
    1521581591.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多