【问题标题】:Print out hours and minutes with date? [duplicate]打印带日期的小时和分钟? [复制]
【发布时间】:2015-03-10 20:34:17
【问题描述】:
CREATE OR REPLACE FUNCTION GET_DATE(P_DAYS IN  NUMBER) RETURN DATE AS V_DATE DATE;
BEGIN
V_DATE := SYSDATE+P_DAYS;
RETURN V_DATE;
END;

当我选择这个时:

select GET_DATE(3)
from dual;

我得到了关注:

2015-03-13

我怎样才能像这样将HH24:MI 添加到其中?

2015-03-13 21:34

【问题讨论】:

  • 您使用的是什么 IDE?可能是 Sql 开发人员或 Toad?这是一个 IDE 问题,而不是 oracle。 DATE 根据定义有时间在里面。您在 select 语句中看不到它的原因是您的 IDE 的 NLS 设置。或查看@aramillo 编辑后的答案。
  • @ruudvan 我正在使用 sql developer
  • 我同意@JustinCave。但是要完成我的思路 - 只需在 sql developer - Tools -> Preferences -> Database -> NLS -> Date Format -> 中执行此操作(将其更改为包括时间)。 sql developer 中的默认日期格式没有时间。请注意,这仅用于显示。这并不意味着该函数没有返回时间。
  • @ruudvan 所以我无法通过 som TO_CHAR 或其他方式获得小时和分钟?我已经被这个问题困扰了几天了
  • 按照阿拉米洛的回答去做。如果您在显示日期值时遇到问题,例如 SELECT SYSDATE FROM DUAL,它有时间但仅显示为没有时间的日期;那是你需要修复 IDE 的格式设置的时候。

标签: sql oracle plsql oracle11g


【解决方案1】:

类似这样的:

select to_char(GET_DATE(3),'yyyy-mm-dd hh24:mi') from dual

也可以改变nls_date_format:

ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-mm-dd hh24:mi';
select GET_DATE(3) from dual;

其他解决方案,改变函数返回一个varchar2:

CREATE OR REPLACE FUNCTION GET_DATE(P_DAYS IN  NUMBER) RETURN VARCHAR2 AS 
BEGIN
RETURN to_char(SYSDATE+P_DAYS,'yyyy-mm-dd hh24:mi');
END;

select GET_DATE(3) from dual;

输出:

Function created.

GET_DATE(3)                                                                     
--------------------------------------------------------------------------------
2015-03-13 16:32                                                                
1 row selected.

【讨论】:

  • 那么任务只是使用 SELECT GET_DATE(3) from dual;所以这就是为什么我坚持这个:(
  • 那我该怎么写呢?
  • 好吧,我尝试了@NoDisplayName 解决方案.. 但 DATETIME 不起作用? :我
  • @Aramillo 任务是使用 SELECT GET_DATE(3) FROM DUAL;.. 我不能使用 select to char 等等.. : (
  • 您也可以使用 nls_date_format。请检查
猜你喜欢
  • 2014-10-17
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
相关资源
最近更新 更多