我们在自己的云上有一个Python程序,我们想要从MySQL数据库中获取数据,并用它来进行分析。到目前为止,我们想要从日期时间中选择时间。
示例:'02/11-2019 18:20:00' --> SELECT '18:20:00'
我们尝试使用以下代码行来实现此目的:
test = pd.read_sql('SELECT CAST(time_end AS time(0)) FROM Raw_Validated WHERE third_temp_lpn = "%s"' % (list_lpn_temp[-1]), conn).astype(str).values
times.extend(test)
print (times)
由于某种原因,打印时还添加了“0 天”,因此我们的打印看起来像:
文本
2019-07-26 19:00:00 | 2019-07-26 19:20:00
[array(['0 days 19:20:00.000000000'], dtype=object)]
2019-07-27 03:00:00 | 2019-07-27 03:20:00
[array(['0 days 19:20:00.000000000'], dtype=object), array(['0 days 12:40:00.000000000'], dtype=object), array(['0 days 17:00:00.000000000'], dtype=object), array(['0 days 11:20:00.000000000'], dtype=object)]
2019-07-27 22:20:00 | 2019-07-27 22:40:00
[array(['0 days 19:20:00.000000000'], dtype=object), array(['0 days 12:40:00.000000000'], dtype=object), array(['0 days 17:00:00.000000000'], dtype=object), array(['0 days 11:20:00.000000000'], dtype=object)]
为什么会发生这种情况,我们可以采取什么措施来避免这种情况?
最佳答案
您应该将转换/剪切移动到应用程序的 python 部分,我认为这比在数据库上进行转换更容易:
import datetime
sql_time = "2019-11-12 18:20:00"
time_end = datetime.datetime.strptime(sql_time, '%Y-%m-%d %H:%M:%S')
print(time_end.strftime('%H:%M:%S'))
当您使用 pandas 时,您不应该强制转换日期时间对象,因为 pandas 本身可以执行此操作:
Series.dt.time - 返回 datetime.time 的 numpy 数组 ( https://pandas.pydata.org/pandas-docs/stable/reference/series.html )
关于python - 从日期时间中选择时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59372565/