我的访问表如下:
insert into Visit
values(12, to_date('19-JUN-13', 'dd-mon-yy'), to_date('19-JUN-13 12:00 A.M.' , 'dd-mon-yy hh:mi A.M.'));
insert into Visit
values(15, to_date('20-JUN-13', 'dd-mon-yy'), to_date('20-JUN-13 02:00 A.M.' , 'dd-mon-yy hh:mi A.M.'));
insert into Visit
values(18, to_date('21-JUN-13', 'dd-mon-yy'), to_date('21-JUN-13 10:30 A.M.' , 'dd-mon-yy hh:mi A.M.'));
当我尝试查询时:
select * from Visit
我得到:
SQL> select * from visit;
SLOTNUM DATEVISIT ACTUALARRIVALTIME
---------- --------- ------------------------------
12 19-JUN-13 19-JUN-13
15 20-JUN-13 20-JUN-13
18 21-JUN-13 21-JUN-13
SQL> spool off;
时间到了怎么样?
答案 0 :(得分:11)
您还可以设置适用于所有日期的格式,如下所示:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH:MI:SS PM';
这样,您的原始查询将以您之后的格式输出日期,而不使用TO_CHAR
。要恢复到通常的默认格式,只需执行以下操作:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-RR';
答案 1 :(得分:8)
这是oracle日期格式,它被设置为您实例的默认格式。
您应该正确指定格式以查看更多或更少......如下所示:
select to_char( datevisit, 'dd-mon-yy hh24:mi:ss' ) from visit
答案 2 :(得分:2)
您依赖于隐式日期转换,它使用您的(依赖于会话,但可能继承自数据库默认设置)NLS_DATE_FORMAT
设置 - 在这种情况下似乎是DD-MON-RR
。< / p>
您可以使用to_char
指定格式,例如:
select to_char(actualarrivaltime, 'DD-MON-YYYY HH:M:SS PM') from ..
datetime format models are described in the documentation。
一般来说,最好不要依赖implcit转换。即使你现在得到了你期望的东西,它们也可以是特定于会话的,所以另一个客户的另一个用户可能会看到不同的东西。这可能会导致失败,也可能只是看错了。始终使用to_date
,to_char
,to_timestamp
等指定日期和数字格式。
答案 3 :(得分:2)
Oracle内部遵循'DD-Mon-YY'格式存储在数据库中。所以它返回'DD-Mon-Y
如果您希望使用小时分和秒的日期格式。您可以在会话中更改NLS_DATE_FORMAT。
如果要查询该实例的正好演示目的。使用TO_char函数转换为所需的格式。
SELECT slotnum, TO_CHAR (datevisit, 'DD-MON-YY ') "DATEVISIT",
TO_CHAR (actualarrivaltime, 'DD-MON-YY HH:MI:SS AM') "ACTUALARRIVALTIME"
FROM visit
我希望上面的查询可以为您提供输出。
答案 4 :(得分:0)
select localtimestamp from dual;