如何将文本变量转换为 postgreSQL 中的时间戳?
How to convert a text variable into a timestamp in postgreSQL?
我知道如何使用
在 postgreSQL 中将文本转换为时间戳
SELECT to_timestamp('05 Dec 2000', 'DD Mon YYYY')
但是如何将文本变量(在函数内)转换为时间戳?
在我的 table (table_ebscb_spa_log04) "time" 是一个字符变化的列,我在其中放置了一个格式化的日期时间 (15-11-30 11:59:59 .999 点)。
我试过这个函数,为了将日期时间文本转换成一个变量(它总是改变)并将它转换成时间戳...
CREATE OR REPLACE FUNCTION timediff()
RETURNS trigger AS
$BODY$
DECLARE
timeascharvar character varying;
timeastistamp timestamp;
BEGIN
IF NEW.time_type = 'Lap' THEN
SELECT t.time FROM table_ebscb_spa_log04 t INTO timeascharvar;
SELECT to_timestamp('timeascharvar', 'yy-mm-dd HH24:MI:SS.MS') INTO timeastistamp;
END IF;
RETURN timeastistamp;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION timediff()
OWNER TO postgres;
但每当我在 table 中 运行 它时,它都会显示此错误消息...
似乎 "to_timestamp" 等待数字是年份,我怎样才能让它像识别数字一样识别变量?
to_timestamp 的第一个参数应该是您的变量,而不是包含变量名称的字符串:
to_timestamp(timeascharvar, 'yy-mm-dd HH24:MI:SS.MS')
我知道如何使用
在 postgreSQL 中将文本转换为时间戳SELECT to_timestamp('05 Dec 2000', 'DD Mon YYYY')
但是如何将文本变量(在函数内)转换为时间戳?
在我的 table (table_ebscb_spa_log04) "time" 是一个字符变化的列,我在其中放置了一个格式化的日期时间 (15-11-30 11:59:59 .999 点)。 我试过这个函数,为了将日期时间文本转换成一个变量(它总是改变)并将它转换成时间戳...
CREATE OR REPLACE FUNCTION timediff()
RETURNS trigger AS
$BODY$
DECLARE
timeascharvar character varying;
timeastistamp timestamp;
BEGIN
IF NEW.time_type = 'Lap' THEN
SELECT t.time FROM table_ebscb_spa_log04 t INTO timeascharvar;
SELECT to_timestamp('timeascharvar', 'yy-mm-dd HH24:MI:SS.MS') INTO timeastistamp;
END IF;
RETURN timeastistamp;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION timediff()
OWNER TO postgres;
但每当我在 table 中 运行 它时,它都会显示此错误消息...
似乎 "to_timestamp" 等待数字是年份,我怎样才能让它像识别数字一样识别变量?
to_timestamp 的第一个参数应该是您的变量,而不是包含变量名称的字符串:
to_timestamp(timeascharvar, 'yy-mm-dd HH24:MI:SS.MS')