gpt4 book ai didi

python - 无法将 DateTimeField 的默认值设置为 "0000-00-00 00:00:00"

转载 作者:搜寻专家 更新时间:2023-10-30 22:25:21 27 4
gpt4 key购买 nike

fld_date_time = models.DateTimeField(db_column='FLD_DATE_TIME', blank=True, null=True, default="0001-00-00 00:00:00")

models.py 中的这个字段抛出错误:

["'0000-00-00 00:00:00' 值的格式正确 (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) 但它是无效日期/时间。”]

如何在django中添加默认值?

最佳答案

问题是您的默认值毫无意义。没有第零日,也没有第零月。 Python 可以表示为 datetime 对象的最小日期是:

>>> datetime.min
datetime.datetime(1, 1, 1, 0, 0)

所以 1 月 1 日,1. 在某些(大多数)数据库中,范围甚至更加严格。例如在 MySQL范围是:

The DATE type is used for values with a date part but no time part. MySQL retrieves and displays DATE values in 'YYYY-MM-DD' format. The supported range is '1000-01-01' to '9999-12-31'.

The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD
HH:MM:SS'
format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.

The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.

MySQL确实有一个“零日期”:

Invalid DATE, DATETIME, or TIMESTAMP values are converted to the "zero" value of the appropriate type ('0000-00-00' or '0000-00-00
00:00:00'
).

但是没有很好的方法将它包装到 datetime 对象中,因为如前所述,它超出了可表示范围。

可以使用建议的解决方案here这基本上构造了一个新的 Django ZeroDateTimeField 以将 None 映射到这个零值。但据我所知,您可以不使用标准的 DateTimeField 执行此操作。

因此,您可以使用数据库可表示的最小可表示 datetime 对象,或者改用 NULL

关于python - 无法将 DateTimeField 的默认值设置为 "0000-00-00 00:00:00",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53042481/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com