0

这是我的代码:

 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

1317而不是15

谢谢你的hrlping

4

1 回答 1

1

您正在将字符串转换为日期,然后直接显示日期。当您这样做时,输出在内部被格式化为字符串,这取决于您的会话区域设置。

如果您想以您想要的格式获取日期,您应该使用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;

希望这能解决问题。:)

于 2013-05-27T11:11:03.717 回答