您正在将字符串转换为日期,然后直接显示日期。当您这样做时,输出在内部被格式化为字符串,这取决于您的会话区域设置。
如果您想以您想要的格式获取日期,您应该使用TO_CHAR函数,当您需要将日期显示给用户时,该函数会将您的日期格式化回字符串。使用 TO_CHAR 您可以使用格式模型以您希望的任何格式获取您的日期(尝试在 SQL Server 中执行...;)。
考虑这个脚本:
set serveroutput on;
DECLARE
l_ts TIMESTAMP;
BEGIN
-- Here You get DATE from STRING
l_ts := to_timestamp(('01.01.2013' || ' 13:00:00'), 'DD.MM.YYYY:HH24:MI:SS');
-- Here You get STRING representation of Your DATE.
-- Representation depends on You session settings,
-- and should not be relayed upon.
dbms_output.put_line(l_ts);
-- Examples how You can display DATE as STRING in any way You need
dbms_output.put_line(TO_CHAR(l_ts,'YYYY-MM-DD HH24:MI:SS'));
dbms_output.put_line(TO_CHAR(l_ts,'YYYY-MM-DD HH12:MI:SS AM'));
END;
希望这能解决问题。:)