2016-05-13 6 views
0

このISO 8601と互換性のあるUTC時刻をSQL DATETIME形式に変換する方法はありますか?datetime stringをsql形式に変換するには?

>>> str = "2016-03-28T20:23:46+0800" 
>>> temp = str.split('T') 
>>> temp[1] = temp[1].rstrip('+') 
>>> temp[1] 
'20:23:46+0800' 
>>> temp[1] = temp[1].split('+')[0] 
>>> result = " ".join(temp) 
>>> result 
'2016-03-28 20:23:46' 

ありがとうございます!

+0

この結果をクエリ文字列にフォーマットまたは連結しないことをお勧めします。 –

+0

私はそれをタプルの属性として書くつもりです、はい、そして何ですか? – paus

+0

可能な複製http://stackoverflow.com/questions/12281975/convert-timestamps-with-offset-to-datetime-obj-using-strptime – lesingerouge

答えて

2

をあなたは単に形式を切り替えることができます

>>> date_str = "2016-03-28T20:23:46+0800" 
>>> format = '%Y-%m-%dT%H:%M:%S%z' 
>>> new_format = '%Y-%m-%d %H:%M:%S' 
>>> datetime.datetime.strptime(date_str, format).strftime(new_format) 
'2016-03-28 20:23:46' 

これは、%zフラグをサポートしていないため、Python 2.xでは機能しません。回避策については、timezone python 2 supportを参照してください。

+1

を実行すると、%zに問題が発生します。これをチェックしてください:http://stackoverflow.com/questions/12281975/convert-timestamps-with-offset-to-datetime-obj-using-strptime – lesingerouge

+0

@lesingerouge注目に感謝します。私はあなたがPython 2.xのサポートのために提供したリンクを追加しました。 –

0

これを行う簡単な方法はありません。可能な解決策の詳細については、 チェックアウトthis postをご覧ください。

クイックハックを探しているなら、この試してみてください。

st = '2016-03-28T20:23:46+0800' 
st[:19].replace("T", " ") 

それとも、あなたは日時の日付が必要な場合:

datetime.datetime.strptime(st[:19], '%Y-%m-%dT%H:%M:%S') 
+0

>>> str '2016-03-28T20:23:46 + 0800' >>>インポート日時 >>> datetime.datetime.strptime(str、 "%Y-%m-%d%H% M:%S ")isoformat(" ") トレースバック(最新の呼び出しの最後): ファイル "/usr/lib/python2.7/_strptime.py" で ファイル" 」、ライン1、ライン325、in _strptime (data_string、format)) ValueError:時刻データ '2016-03-28T20:23:46 + 0800'がフォーマット '%Y-%m-%d%H:%M:%Sと一致しません' – paus

+0

@paus my bad、corrected。 Python 2で – lesingerouge

関連する問題