如何为变量赋值,但要“从时间戳映射中提取”?

时间:2019-06-06 02:59:52

标签: postgresql function timestamp plpgsql

我有一个在表中插入小时和天的函数,但是我不希望在星期六和星期日插入它;为此,我找到了提取代码(来自时间戳映射'YYYY-MM-DD hh24:mi:ss'的isodown),但是问题是,当将值赋给变量以使条件成为条件时,它不会读取它,并抛出了我错误。

desde TIMESTAMP;

desde:=TO_TIMESTAMP('2019-06-09 20:00:00', 'YYYY-MM-DD hh24:mi:ss')::TIMESTAMP;

var_fds:=(select cast(extract(ISODOW from timestamp (desde::varchar)) as int));

CASE WHEN var_fds<6 then
...DO SOMETHING
END;

ERROR:  error de sintaxis en o cerca de «desde»
LINE 27: ...ds:=(select cast(extract(ISODOW  from  timestamp (desde::var...

我还尝试仅将变量'desde'放入varchar中,但仍然无法识别。

1 个答案:

答案 0 :(得分:0)

您只需分配表达式的结果:

var_fds := cast(extract(ISODOW  from  desde) as int);

由于desde已经是timestapm,因此无需强制转换为其他内容。

表达式中的timestamp前缀仅对于常量值使其成为键入值是必需的。