Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从datefield到datetimefield的数据迁移_Python_Django_Django Models - Fatal编程技术网

Python 从datefield到datetimefield的数据迁移

Python 从datefield到datetimefield的数据迁移,python,django,django-models,Python,Django,Django Models,我只是想知道我哪里/哪里做错了。下面是一个场景 我有一个字段date=DateField() 我所做的: 添加临时字段temp=DatetimeField(),然后通过数据迁移将值从date=DateField()传输到temp 删除date=DateField() 添加date=DateTimeField() 将存储值从temp传输到date 一切都很顺利,没有错误。但有一件事改变了,值 例如: 旧数据:datetime.date(2014年5月5日) 新数据:datetime.datet

我只是想知道我哪里/哪里做错了。下面是一个场景

我有一个字段
date=DateField()

我所做的:

  • 添加临时字段
    temp=DatetimeField()
    ,然后通过数据迁移将值从
    date=DateField()
    传输到temp
  • 删除
    date=DateField()
  • 添加
    date=DateTimeField()
  • 将存储值从
    temp
    传输到
    date
一切都很顺利,没有错误。但有一件事改变了,

例如:

旧数据:
datetime.date(2014年5月5日)

新数据:
datetime.datetime(2014,5,4,12,0,tzinfo=UTC)

所以我的问题是,为什么它会改变,并从原始值中减去1天?有什么想法吗?是因为时区的原因吗?时区设置为太平洋/奥克兰


任何帮助都将不胜感激。谢谢

太平洋/奥克兰的GMT偏移量为UTC+12(小时)

datetime.datetime(2014,5,4,12,0,tzinfo=UTC)
表示4日中午UTC。但是由于奥菲的缘故,现在是奥克兰的午夜。然而,奥克兰的午夜实际上是5日的“0小时”

所以,是的,这个问题确实与时区有关,但事实上这不是一个问题。日期没有改变,只是用不同的时区表示



当然,您可以回滚迁移,并在步骤1中将
日期
转换为
日期时间
,以不同的方式说明时区

多谢各位。为了不丢失原始日期值,您的建议或步骤是什么?