我想将时间序列存储在数据库中。这些时间序列的值通常定义一段时间,例如:
我想结合这些varabiales的数据,以便能够做一些状态,所以住房与人口。这只有在我确保时间段完全相同的情况下才有可能。期间通常以每年/每季/每月为基础。如何最好地存储这些值,以便我以后可以比较它们?
我目前使用的是start_date(datetime)和end_date(datetime),这显然有效但需要一个好的GUI来阻止一个人进入例如:
start = 1-1-2016 & end = 31-12=2016
而另一个人会进入:
start = 1-1-2016 & end = 1-1=2017
我认为保持与用户定义句点的自由是一个好主意,但有助于他们定义正确的事物。你会怎么建议这样做?
BTW:我使用Django所以我当前的模型有以下两个字段:
period_start = models.DateField(null=False)
period_end = models.DateField(null=False)
编辑8-5-2018 10:32:添加了一些有关存储数据的信息 一些额外信息,以增加清晰度: 我将数据存储在两个表中:(1)变量定义和(2)值。 变量定义看起来大致如下:
class VarDef(models.Model):
name = models.CharField(max_length=2000, null=False)
unit = models.CharField(max_length=20, null=False)
desc = models.CharField(max_length=2000, blank=True, null=True)
class VarValue(models.Model):
value = models.DecimalField(max_digits=60, decimal_places=20, null=False)
var = models.ForeignKey(VarDef, on_delete=models.CASCADE, null=False,
related_name='var_values')
period_start = models.DateField(null=False)
period_end = models.DateField(null=False)
答案 0 :(得分:0)
由于我没有完整的代码(模型,视图等),因此很难回答。但请注意,您可以使用lt
和gt
来查询django datetime
字段,如下所示:
import datetime
# user input from your view, I hardcoded just for the sake of the example
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
house_data = HousesData.objects.filter(period_start__gt=start_date, period_end__lt=end_date)).all()
country_data = CountryData.objects.filter(period_start__gt=start_date, period_end__lt=end_date)).all()
# Do the rest of your calculation