2016-10-10 16 views
5

これは私のコードで、他の場所でNotification.create_timesqlalchemyクエリでdatetimeを文字列に変更する方法は?

result = session.query(
     Notification.content, cls.is_read, 
     Notification.create_time).join(
     cls, Notification.id == cls.notification).filter(
      and_(cls.user == user_id)).order_by(
       Notification.create_time.desc()).all() 

を照会、フロントエンドにjson.dumpsクエリ結果に必要な日時フォーマットは望めないjson.dumpsので、私はこのようにやりたい:

session.query(Notification.create_time.strftime('%Y-%m-%d %H:%M')) 

だから、datetimeをsqlalchemyクエリの文字列に変更するにはどうすればよいですか?

+1

これはDB固有のものです。 Postgresqlは、タイムスタンプの書式設定のために['to_char'](https://www.postgresql.org/docs/current/static/functions-formatting.html)を使用しています。これは[' sqlalchemy.func'](http ://docs.sqlalchemy.org/en/latest/core/functions.html)。しかし、より良い解決策は、[datetime'オブジェクトを扱うJSONシリアライザを使うことです](http://stackoverflow.com/questions/23285558/datetime-date2014-4-25-is-not-json-serializableイン・ジャンゴ)。 –

+0

あなたは素晴らしいです、ありがとう、非常にありがとうございます。私のアイデアは間違ったway.XDに行く – alvy

答えて

4

は、文字列に日時を変換する(、postgresの中にmysqlのわからない)func.to_char()を使用することができます、のようなもの:

from sqlalchemy.sql import func 
session.query(func.to_char(Notification.create_time, '%Y-%m-%d %H:%M')) 

しかし、それは日付時刻のようなものを処理するために、あなたのJSONシリアライザを設定するためのより良い方法、as is described in this answer

+1

あなたはあなたが多くを変える~~~~~~~~~~~~~~~~~~~~~~~~~~~ – alvy

+1

このフォーマットは私のために働いた 'Dy、DD Mon YYYY HH: MM:SS 'in Postgres –

関連する問題