帮我解决这个Postgresql查询

时间:2009-08-19 12:12:45

标签: postgresql

下面的Postgresql查询应该返回以下日期类型ti varchar()类型,但它给出错误。我甚至尝试过转换(也使用return),但它仍然给出了错误。

CREATE FUNCTION TimePart( fDate out date )
--RETURNS date
AS $$
BEGIN

 cast(fDate AS char(10));

END;
$$ language 'sql'

3 个答案:

答案 0 :(得分:4)

  1. sql函数不使用begin - >结束 - 它只在plpgsql
  2. (fDate out date)?它是什么样的语法?
  3. 为什么退货日期被注释掉了?
  4. 为什么在功能体中没有“选择”?
  5. 这个函数没有意义 - 你可以在sql查询中自己选择some_date_column :: varchar
  6. 不要使用char()数据类型 - 它不比varchar快,并且可能导致细微(或不那么微妙的错误)。
  7. sql语言不接受命名参数(fDate)
  8. datepart已经是内置函数的名称 - 并且覆盖它绝对是个坏主意。
  9. 假设您想要将date参数转换为某个varchar值的函数(您不需要执行任何函数 - 我在上面第5点指出的内容),您可以使用:

    create function date_to_varchar(date) returns varchar as $$
    select $1::varchar;
    $$ language sql;
    

答案 1 :(得分:0)

试试这个:

CREATE FUNCTION TimePart( fDate out date )
--RETURNS date
AS $$
BEGIN

    fDate := cast(fDate AS varchar(10));

END;
$$ language 'plpgsql'

如果您要使用变量,则需要使用plpgsql作为语言。另外,使用varchar。这样你就不必花费时间来减少它。

答案 2 :(得分:0)

要将输入日期转换为varchar,请尝试以下方法:

CREATE FUNCTION TimePart(fDate date)
RETURNS varchar AS
$$
BEGIN
    return fDate::varchar;
END;
$$ LANGUAGE 'plpgsql';