2016-04-25 49 views
0

我有与MariaDB 10.1.13(也测试MySQL 5.6.30)(这是从MySQL 5.5更新)安装的Django 1.9.5,我想在日期时间获得小数秒支持领域。Django日期时间字段部分支持

我创建了一个测试模型,试图得到这个工作,这里的定义是

class History(models.Model): 
    date = models.DateTimeField(null=True) 

然后在shell我已经运行以下

History(date=datetime.now()).save() 

,然后当我查询它

type(History.objects.get(id=1).date) 

我得到

<type 'NoneType'> 

即使条目出现在数据库中。

我也可以用字段查询

History.objects.all().order_by('date') 

我知道这工作,因为检查的数据显示,为了改变

但我需要能够返回的日期,所以我可以与另一个进行比较。

我正在使用MySQL 5.5而没有小数支持,但在我的数据库中有相同日期时间字段的记录,因此order_by没有工作,我使用了order_by id,并且这些记录是按时间顺序输入的,但现在这不是我需要小数支持的情况。

任何想法?

+0

你确定你正在查询刚才创建的同一个对象吗?如果数据库中有其他对象(其中第一个具有'id = 1',而不是刚刚创建的对象),似乎不太可能。 – solarissmoke

+0

是的我确定,这只是一个测试表,没有数据 –

+0

保存'History(date = datetime.now())。save()'你能检查它的'id'是什么吗? – AKS

回答

0

对于这种情况,最好将日期和时间作为unix时间戳存储在数据库中。你有毫秒的准确性。您可以随时使用fromtimestamp转换为python datetime对象。

最后但并非最不重要的一点,您可以轻松地将JavaScript的unix时间戳转换为用户自己的时区中的日期时间。与django或其他服务器端技术相比,这个过程要复杂得多。

+0

对于大多数情况我使用auto_now和auto_now_add选项,所以我实际上并没有输入数据(我创建了上面的场景来测试) 。这些工作,但存储的数据也不是分数。此外,我相信有这方面的解决方法,但它应该工作,我想知道为什么它没有。如果我发现目前不可能,那么我会采取解决办法 –

相关问题