[英]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.