すべての行のタイムゾーンでタイムスタンプを作成する PostgreSql があります。しかし、このタイムスタンプを印刷しようとすると、次のようになります: "2013-03-06 00:00:00+01:00"
まず、なぜ 00:00:00 と言うのですか?
第二に、どうすればそれをそのようなものに変換できますか:
06.03.2013 07:10:13
または
例:「12秒前」「1日1時間前」
マーヴィンありがとう
すべての行のタイムゾーンでタイムスタンプを作成する PostgreSql があります。しかし、このタイムスタンプを印刷しようとすると、次のようになります: "2013-03-06 00:00:00+01:00"
まず、なぜ 00:00:00 と言うのですか?
第二に、どうすればそれをそのようなものに変換できますか:
06.03.2013 07:10:13
または
例:「12秒前」「1日1時間前」
マーヴィンありがとう
00:00:00
おそらく誰かが時間部分なしで日付だけを挿入したため、時間部分として取得しました。次の結果を参照してください。
select current_date, current_timestamp;
あなたが得るでしょう:
"2013-03-07";"2013-03-07 08:31:59.098661+01"
日付だけでタイムスタンプ列を INSERT または UPDATE すると、時刻部分が にカットされ00:00:00
ます。current_timestamp
date 、 time 、および time zone が必要な場合に使用する必要があります。
そのような日付を文字列に変換することは、サーバー側とクライアント側の両方で行うことができます。PostgreSQL の日時関数、使用できるPostgreSQL 形式の関数、および Python 関数が多数あります。
と:
select to_char(current_timestamp, 'DD.MM.YY HH12:MI:SS')
次のようなものが得られます。
"07.03.13 08:40:50"
Lafada の回答では、datetime オブジェクトの Python の書式設定について説明しています。
現在とある日時の違いを表示したい場合は、PostgreSQLage()
関数を使用できます。
select age(timestamp '2003-03-01');
結果:
"10 years 6 days"
もちろん、Python はタイムスタンプの違いも表示できます。
import datetime
dt_old = datetime.datetime.strptime('2001-12-31 22:33:44', '%Y-%m-%d %H:%M:%S')
dt_diff = (datetime.datetime.today() - dt_old)
print(dt_diff)
私の結果:
4083 days, 10:16:14.140000
Python モジュールのdatetimeを使用する必要があります。そのモジュールから、文字列を日付に変換し、その日付をフォーマットできます。
>>> from datetime import datetime
>>> datetime.strptime('06.03.2013 07:10:13', '%d.%m.%Y %H:%M:%S').strftime('%Y-%d-%m %H:%M:%S%Z')
'2013-06-03 07:10:13'