【问题标题】:Python- postgresql timestamp and time without time zonePython- postgresql 时间戳和没有时区的时间
【发布时间】:2011-12-14 06:58:36
【问题描述】:

我有 2 个字符串代表:

  1. date- dd/mm/yyyy hh:mm 我需要将其转换为 timestamp without time zone
  2. start_time/end_tiime- hh:mm:ss 我需要转换它没有时区的时间

我需要这样做才能将它们添加到 sql 查询中。看起来像这样:

sql = '''
    INSERT INTO myTable (date, start_time, end_time)
    VALUES (%s ,%s, %s, %s);'''
params = [timestamp, start_time, end_time]
self.cursor.execute(sql, params)

【问题讨论】:

  • 你是使用ORM(SQLAlchemy、Autumn等)还是直接使用一些dbapi模块,哪一个(psycopg2、pg8000等)?
  • 我没有尝试过,但我认为您可以提供psycopg2 Python 字符串、浮点数、整数、日期时间对象,如果没有,它会自行将它们转换为兼容的 SQL 类型,如果您可以注册适配器.可能会出现一些复杂情况,例如不同版本的 postgresql 以不同的方式对待 timestamp 有/没有时区类型,psycopg2 可能 暴露 postgresql 是使用整数还是浮点数编译时间戳、时间。您可以通过调用cursor.mogrify() 来查看将发送到数据库的内容。

标签: python postgresql datetime timestamp


【解决方案1】:
  1. dd/mm/yyyy hh:mm 到没有时区的时间戳:

    import time
    
    date_string='24/10/2011 12:43'
    ttuple=time.strptime(date_string,'%d/%m/%Y %H:%M')
    timestamp=time.mktime(ttuple)
    # 1319474580.0
    
  2. hh:mm:ss 到没有时区的时间:

    您能澄清一下time 是什么类型的对象吗?

【讨论】:

  • 好的。谢谢。如果我希望它是 ISO 8601,没有日期,只有时间?
  • 如果给你一个hh:mm:ss格式的字符串作为输入,你想要什么作为输出?
  • 我在这里测试过,这是返回一个带时区的时间戳
猜你喜欢
  • 1970-01-01
  • 2014-02-12
  • 2018-09-28
  • 2018-07-10
  • 1970-01-01
  • 2011-07-15
  • 2015-07-31
  • 2010-11-02
  • 1970-01-01
相关资源
最近更新 更多