我需要将默认时间设置为 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') }}