【问题标题】:Datetime issue in DjangoDjango中的日期时间问题
【发布时间】:2010-10-25 21:36:45
【问题描述】:

我正在尝试添加一个人的日期时间对象。每当出生年份小于 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。

任何形式的帮助将不胜感激。谢谢。

【问题讨论】:

  • 恐怕我根本无法复制这个(postgresql 8.3、psycopg2 2.0.3、django 1.0 final、python 2.5)。你用的是什么版本的 postgres,驱动是什么版本的?
  • 版本是 psql (PostgreSQL) 8.3.7,

标签: python django datetime postgresql


【解决方案1】:

我唯一能想到的可以在PostgreSQL docs 中找到。我的猜测是 Django 将您的日期存储在“reltime”字段中,该字段只能追溯到 68 年。我的计算器验证了 2009-68 == 1941,这似乎与您报告的非常接近。

我建议通过运行以下命令查看表的架构:

$ python manage.py sql appname

看看有问题的日期字段是否是我怀疑的“reltime”字段。如果是这种情况,我不知道如何将其更改为更兼容的字段而不会弄乱一切。

【讨论】:

  • 我检查了,它的“出生”时间戳,时区为 NULL”。
  • @bluejeansummer 嘿,我还是找不到解决这个问题的方法。
  • 我对 PostgreSQL 不是很熟悉,因为我通常在 django 中使用 SQLite 或 MySQL,所以我不认为我可以推荐任何你还没有尝试过的东西。
  • @bluejeansummer 那么,你的意思是这个问题在 SQLite 或 MySQL 上运行良好?如果是,那么它不是 django 问题对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多