Django中的日期时间问题

4 投票
1 回答
820 浏览
提问于 2025-04-15 11:34

我正在尝试添加一个人的出生日期和时间对象。每当出生年份小于1942年时,从数据库中读取数据时就会出现一个奇怪的错误,提示DataError: unable to parse time

class Person(models.Model):
    """A simple class to hold the person info
    """
    name = models.CharField(max_length=100)
    born = models.DateTimeField(blank=True, null=True)

比如说,我试着添加一个1929年出生的人的datetime对象,然后再读取它,就会失败。

我想再强调一下,数据插入是没问题的,但在读取时就出错了。我猜测数据库内部可能出了什么问题。

我做了一些测试,发现每当我添加1940年或更早出生的人时,就会失败,并出现DataError: unable to parse time的错误。

我使用的是PostgreSQL数据库。

任何帮助都非常感谢。谢谢。

1 个回答

6

我想到的唯一解决办法可以在PostgreSQL文档中找到。我的猜测是,Django把你的日期存储在一个叫“reltime”的字段里,这个字段只能追溯到68年前。用计算器算一下,2009年减去68年等于1941年,这和你提到的情况很接近。

我建议你查看一下你的表的结构,可以运行以下命令:

$ python manage.py sql appname

看看你关心的日期字段是否真的是我猜测的“reltime”字段。如果真是这样,我就不知道该怎么把它改成一个更兼容的字段,而不把其他东西搞乱了。

撰写回答