使用显式转换将列的数据类型转换为时间戳
Convert data type of column to timestamp using explicit cast
我运行以下命令修复了我在 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)
ALTER TABLE merged_subscription
ALTER COLUMN end_date TYPE timestamp
USING to_timestamp(<b>end_date</b>, 'DD-MON-YYY');
将占位符 col
替换为实际的列名。
假设 end_date
中的字符串符合给定的(不常见!)模式。 (?)
你确定你没有'DD-MON-YYYY'
吗?
如果您确实有一个 date
列,则不需要 USING
子句。在 date
和 timestamp
之间有一个 implicit 强制转换,只需要一个 assignment 强制转换。
ALTER TABLE merged_subscription
ALTER COLUMN end_date TYPE timestamp;
详情:
- Generate series of dates - using date type as input
我运行以下命令修复了我在 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)
ALTER TABLE merged_subscription
ALTER COLUMN end_date TYPE timestamp
USING to_timestamp(<b>end_date</b>, 'DD-MON-YYY');
将占位符 col
替换为实际的列名。
假设 end_date
中的字符串符合给定的(不常见!)模式。 (?)
你确定你没有'DD-MON-YYYY'
吗?
如果您确实有一个 date
列,则不需要 USING
子句。在 date
和 timestamp
之间有一个 implicit 强制转换,只需要一个 assignment 强制转换。
ALTER TABLE merged_subscription
ALTER COLUMN end_date TYPE timestamp;
详情:
- Generate series of dates - using date type as input