python - 如何仅使用日期(没有时间)设置默认时间戳?

我需要将默认时间设置为 now 但不希望出现时间。如何设置仅包含日期的默认时间戳,并排除时间?

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    email = db.Column(db.String(64), unique=True, index=True)
    password = db.Column(db.String(128))
    # phone = db.Column(db.String(16), unique=True, index=True)
    bio = db.Column(db.String(64))
    create_time = db.Column(db.DateTime(64), default=datetime.utcnow)

回答1

正如 https://stackoverflow.com/a/33532154/1164465https://stackoverflow.com/q/13370317/1164465 的回答中所述,最佳实践是让数据库服务器而不是应用程序服务器计算默认值 datetime .这是通过 SQLAlchemy https://docs.sqlalchemy.org/en/14/core/functions.html#sqlalchemy.sql.functions.now 完成的。

from sqlalchemy.sql import func

class User(db.Model, UserMixin):
    ...
    create_time = db.Column(db.DateTime(timezone=True), default=func.now())

然后要仅显示 datetime 的日期部分,您可以在应用程序中格式化 datetime 字段,例如在呈现模板时。

请参阅https://stackoverflow.com/q/4830535/1164465

按日期过滤查询

您还可以仅使用日期过滤查询。

from datetime import datetime

users = User.query.filter(User.create_time >= datetime.today()).all()

回答2

我找到了一个简单的解决方案,我只是像这样修改 HTML 页面:

{{ data.create_time.strftime('%Y-%m-%d %H:%M:%S') }}

相似文章

随机推荐

最新文章