2017-11-03 7 views
0

datetime.timedeltaオブジェクトから "HH:MM"の形式で時刻を取得したいとします。私はMySQLデータベースに格納されたテーブルを持っています。それは私がPyMySQLモジュールを使用してMySQLサーバに接続されている形式で時間を記憶している時間列、Pythonのdatetime.timedeltaオブジェクトからTimeを取得中にエラーが発生しました

00:00:00 

があり、

conn = pymysql.connect("localhost", "root", "cloudera", "streaming") 
cursor = conn.cursor() 
sql = "select * from table1 limit 5;" 
cursor.execute(sql) 
row = cursor.fetchone() 
row[1] 

出力は、私が持っている

datetime.timedelta(0) 

ですこの投稿にはPython: How do I get time from a datetime.timedelta object?が掲載されました。しかし、その質問と私との違いは、出力結果です。その記事では、出力は

datetime.timedelta(0, 64800) 

されており、私にとってそれは私のための出力がそのようである理由私はちょうどそれを取得しないだけで、

datetime.timedelta(0) 

です。誰でも時間を取り戻すのを助けてくれますか?前もって感謝します。

+0

timedelta(0)は0日、0秒を意味するので、00:00 – Richard

+0

ああ!しかし、後の表には「23:00」のようなエントリがあります。だから、それは日時モジュールからどのように扱われますか? –

+0

この列のデータ型は「23:00」です。 – Richard

答えて

0

row[1]と入力すると、pythonは変数のreprを出力します。この場合、timedeltaのreprは "datetime.timedetla(days、seconds)"です。

あなたはstrを使用して、それを文字列化することができますが、それはあなたのHHを与えるだろう:MMの:SS

str(row[1]) 
-> "23:00:00" 

をHHを取得するには:MMは、次の操作を実行できます。

(datetime.min + row[1]).strftime("%H:%M") 
-> "23:00" 

だからあなたのコードが見えるはずです

conn = pymysql.connect("localhost", "root", "cloudera", "streaming") 
cursor = conn.cursor() 
sql = "select * from table1 limit 5;" 
cursor.execute(sql) 
row = cursor.fetchone() 

timestr = (datetime.min + row[1]).strftime("%H:%M") 
print(timestr) 
関連する問題