我正在运行以下命令来修复我在django模型中遇到的Datefield()错误。
django.db.utils.ProgrammingError: column "end_date" cannot be cast
automatically to type timestamp with time zone
HINT: Specify a USING expression to perform the conversion.
以下是我正在运行的线路似乎无法解决问题:
ALTER TABLE merged_subscription ALTER COLUMN end_date TYPE timestamp USING to_timestamp(col, 'DD-MON-YYY');
我对postresql不太熟悉。这里的逻辑有问题吗?
这是我的Django模型供参考:
class Subscription(models.Model):
start_date = models.DateField()
end_date = models.DateField()
date = models.DateTimeField(auto_now_add=True, blank=True)
issue_one = models.ForeignKey(Issue, blank=True, null=True, related_name='issue_one')
issue_two = models.ForeignKey(Issue, blank=True, null=True, related_name='issue_two')
issue_three = models.ForeignKey(Issue, blank=True, null=True, related_name='issue_three')
def __unicode__(self):
return unicode(self.start_date)
答案 0 :(得分:0)
ALTER TABLE merged_subscription
ALTER COLUMN end_date TYPE timestamp
USING to_timestamp(end_date, 'DD-MON-YYY');
将占位符col
替换为实际的列名
假设end_date
中的字符串符合给定(不常见!)模式。 (?)
您确定没有'DD-MON-YYYY'
吗?
如果您确实有date
列,则不需要USING
条款。在date
和timestamp
之间存在隐式广告,并且分配强制转换是所有必需的。
ALTER TABLE merged_subscription
ALTER COLUMN end_date TYPE timestamp;
详细说明: