如何在 sqlalchemy 查询中将日期时间更改为字符串? [复制]

Posted

技术标签:

【中文标题】如何在 sqlalchemy 查询中将日期时间更改为字符串? [复制]【英文标题】:how to change datetime to string in sqlalchemy query? [duplicate] 【发布时间】:2017-02-18 23:35:23 【问题描述】:

这是我的代码,查询 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()

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

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

那么,如何在 sqlalchemy 查询中将日期时间更改为字符串?

【问题讨论】:

那是特定于数据库的。例如,Postgresql 使用to_char 进行时间戳格式化,您可以使用sqlalchemy.func 调用它。但是(imo)更好的解决方案是use a JSON serializer that handles datetime objects。 你太棒了,非常感谢。我的想法走错路了。XD 【参考方案1】:

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

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

【讨论】:

你太棒了。谢谢你变化很大~~~~~~~~ 这种格式在 Postgres 中对我有用 'Dy, DD Mon YYYY HH:MM:SS' 它也适用于 Oracle。谢谢你:) Oracle 使用的值如下:techonthenet.com/oracle/functions/to_date.php 是的,对我来说格式正确 func.to_char(User.birthday, 'YYYY-MM-DD')

以上是关于如何在 sqlalchemy 查询中将日期时间更改为字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JPA 查询中将日期时间转换为日期

python UTC日期和sqlalchemy

SQLAlchemy ORM如何将查询与表连接起来

如何在 C# Nest 中将日期值发送到 elasticsearch 聚合查询

Oracle ADF在查询组件中将secondaryPattern添加到Date

Flask 学习-94.Flask-SQLAlchemy 按日期时间查询