簡體   English   中英

用戶自定義 function 用於字符串到日期的轉換

[英]User-defined function for string to date conversion

我有 csv 文件日期,包含一個日期列,它是文本數據類型

Date
(text)
-----------
 date1
 date2
 date3

我需要將列更改為日期數據類型。 所以我嘗試了這種方法。

create or replace function fn_date_conversion (
 get_column text
) 
    returns table (
        
        datecolumn date
    ) 
    language plpgsql
as $$
begin
    return query 
        SELECT TO_DATE(get_column,'YYYY-MM-DD')
        from tblsalesdata;
end;
$$

SELECT fn_date_conversion(date)

但它會引發錯誤

錯誤:列“日期”不存在
第 1 行:SELECT fn_date_conversion(日期)

當我嘗試使用以下查詢使 function 不帶參數時,它可以工作

   create or replace function fn_date_conversion (
 
) 
    returns table (
        
        datecolumn date
    ) 
    language plpgsql
as $$
begin
    return query 
        SELECT TO_DATE(date,'YYYY-MM-DD')
        from tblsalesdata;
end;
$$

但我需要返回參數,以便我可以動態轉換日期而不是靜態轉換,因為我還有其他文本類型的日期列。 如何解決這個問題?

您使用區分大小寫的標識符(如果可能,請不要這樣做)。 然后你需要在標識符周圍使用雙引號:

SELECT * FROM fn_date_conversion("Date");

RETURN QUERY語句有自己的開銷,在這種情況下是不必要的。 一般不需要的時候最好不要隱藏 SQL

你可以只寫查詢:

SELECT to_date("Date", 'YYYY-MM-DD') FROM tblssalesdata;

或者您可以定義視圖:

CREATE VIEW salesdata AS
SELECT to_date("Date", 'YYYY-MM-DD') AS sales_date
       -- maybe others columns from tblssalesdata
  FROM tblssalesdata;

然后運行:

SELECT * FROM salesdata;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM