【问题标题】:Convert datetime.date or string to timestamp in python在python中将datetime.date或字符串转换为时间戳
【发布时间】:2021-01-30 03:09:44
【问题描述】:

我知道这个问题之前发布过多次,但我几乎没有疑问。我有一个datetime.date(例如mydate = date(2014,5,1)),我将其转换为字符串,然后将其作为(dtype:object) 的列保存在数据库中。现在我想将日期的存储从文本更改为数据库中的时间戳。我试过了,

例如。我的桌子是tab1。我在 python 中将其读取为数据框df

# datetime to timestamp
df['X'] = pd.to_datetime(mydate)

当我在 python 编辑器 df.info() 中检查 dtype 时,X 的 dtype 是 datetime64[ns] 但是当我将它保存到 MySQL 中的 DB 并在 python 中作为数据框再次读取时,dtype 会更改为对象。我在 MySQL 中有数据类型为 datetime,但我需要它作为 MySQL 中的时间戳数据类型。有什么办法吗?另外,我只需要Timestamp('2014-5-01 00:00:00') 的日期并排除时间。

【问题讨论】:

  • 你在 MySQL 中的列是日期类型的吗?
  • 在 MySQL 中是日期时间

标签: python pandas datetime timestamp


【解决方案1】:

问题是当你从 MySQL 读取序列化值时,python MySQL 连接器不会转换它。在从光标读取数据后,您必须通过在检索到的数据上再次调用您的函数将其转换为 DateTime 值:

df['X'] = pd.to_datetime(df['col'])

【讨论】:

  • 好的,但我想在 MySQL 中将数据类型作为时间戳而不是日期时间。 (仅显示日期)
  • 所以在MySQL中选择TIMESTAMP类型作为列类型...
  • 知道如何通过 python 做到这一点吗?
  • 你检查过 df['datetime'] = df['datetime'].apply(lambda x: pd.Timestamp(x))?
  • 是的,我刚刚尝试使用 pd.Timestamp,但 MySQL 中的数据类型仍然是 datetime :(
【解决方案2】:

按照建议,我在插入数据库时​​直接使用to_sql() 函数中的dtype 参数更改了列类型。所以,现在我可以在 MySQL 中拥有 TIMESTAMP, DATETIMEDATE 的数据类型。

【讨论】:

    猜你喜欢
    • 2012-02-05
    • 1970-01-01
    • 2016-03-27
    • 2020-11-22
    • 2012-03-27
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多