如何在sqlalchemy查询中将datetime更改为字符串?

alv*_*lvy 9 python sqlalchemy

这是我的代码,查询Notification.create_time

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()
Run Code Online (Sandbox Code Playgroud)

在其他地方需要json.dumps查询结果到前端,datetime格式不能json.dumps,所以我想这样做:

session.query(Notification.create_time.strftime('%Y-%m-%d %H:%M'))
Run Code Online (Sandbox Code Playgroud)

那么,如何在sqlalchemy查询中将datetime更改为string?

rep*_*cus 11

可以使用func.to_char()(在postgres中,不确定mysql)将日期时间转换为字符串,如:

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

但更好的方法是设置json序列化程序来处理日期时间等事情,如本答案中所述

  • 这种格式对我在Postgres中的“ Dy,DD Mon YYYY HH:MM:SS”有效 (5认同)
  • 你真了不起。谢谢你差别很大~~~~~~~~~ (2认同)