这是我的代码:
l_ts := to_timestamp((d || ' 13:00:00'), 'DD.MM.YYYY:HH24:MI:SS');
u_ts := to_timestamp((d || ' 17:00:00'), 'DD.MM.YYYY:HH24:MI:SS');
我一直在:
26-MAY-13 01.00.00.000000 PM 26-MAY-13 05.00.00.000000 PM
我想:
26-MAY-13 13.00.00.000000 PM 26-MAY-13 17.00.00.000000 PM
即。 13 和 17 而不是 1 和 5 。
感谢hrlping
答案 0 :(得分:1)
您正在将字符串转换为日期,然后直接显示日期。 当您这样做时,输出将在内部格式化为字符串,它取决于您的会话区域设置。
如果您想以您想要的格式获取日期,您应该使用TO_CHAR函数将您的日期格式化回字符串,当您需要将其显示给用户时。使用TO_CHAR您可以使用format models以您希望的任何格式获取日期(尝试在SQL服务器中执行...;)。
考虑这个脚本:
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;
希望能够明确这个问题。 :)