如何在PostgreSQL的UPDATE语句中将TEXT数据类型值转换为DATE数据类型值

时间:2016-08-25 13:26:59

标签: postgresql

我尝试使用PostgreSQL将TEXT数据类型转换为DATE数据类型值来更新2列但我收到此错误:

这是我的错误:

ERROR:  syntax error at or near "CAST"
LINE 2: SET   CAST(sle.log_field1 as DATE),
              ^
********** Error **********

ERROR: syntax error at or near "CAST"
SQL state: 42601
Character: 41

这是我的代码:

UPDATE      student_log_entries sle
SET         CAST(sle.log_field1 as DATE),
        CAST(sle.log_field3 as DATE)
WHERE       sle.student_field_id = 400010960;

任何帮助/方向来实现这一点将不胜感激。感谢。

2 个答案:

答案 0 :(得分:3)

您需要在UPDATE声明中包含列名:

UPDATE      student_log_entries sle
SET <name of a column> = CAST(sle.log_field1 as DATE),
    <name of a column> = CAST(sle.log_field3 as DATE)
WHERE       sle.student_field_id = 400010960;

答案 1 :(得分:0)

假设该列尚未更新,则以下查询将通过date子句将字段类型更改为USING

ALTER TABLE student_log_entries 
   ALTER COLUMN log_field3 TYPE date 
   USING to_date(log_field3, 'YYYY-MM-DD');

如果您需要,可以在USING关键字后使用任何自定义函数代替to_date。

如果已经改变了专栏,帕特里克的答案就会做到。