首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle中,日期格式显示不同

在Oracle中,日期格式显示不同
EN

Stack Overflow用户
提问于 2018-09-05 13:20:30
回答 2查看 46关注 0票数 0

我正在将报表数据从DB导出到excel。我有两个DB(Local&QA)模式,并且对报告有相同的查询。这里我面临一个日期格式的问题。我们使用的是Oracle12c

数据格式应为“DD-MON-YY”,类似于“01-8月-18”,同时将数据导出到excel,

从本地db导出日期,如'12-09-18‘。

在QA db中,它导出日期类似于‘12-8月-18’。

查询是:

代码语言:javascript
复制
select trim(to_date('01-01-1970 00','DD-MM-YYYY hh24') + (createdtime)/1000/60/60/24) 
  from TBL_RESPONSESUMMARY;

有人能给我指路吗。

EN

回答 2

Stack Overflow用户

发布于 2018-09-05 13:32:56

使用TO_CHAR显式指定要用于输出日期的格式模型:

代码语言:javascript
复制
SELECT TO_CHAR(DATE '1970-01-01' + createdtime/1000/60/60/24, 'DD-MON-YYYY')
FROM   TBL_RESPONSESUMMARY;

您的查询所做的是:

  1. to_date('01-01-1970 00','DD-MM-YYYY hh24')DATE数据类型的形式生成划时代值;
  2. + (createdtime)/1000/60/60/24将您的毫秒偏移值添加到它(数据类型将保持为DATE);
  3. trim( string_value )接受一个字符串值并删除前导和尾随空格;但是,您的输入值是DATE而不是字符串,因此Oracle必须使用TO_CHAR执行隐式强制转换,并使用NLS_DATE_FORMAT会话参数。在您的本地数据库中,这可能是DD-MM-RR,但是在QA数据库上,它是DD-MON-RR,因此得到不同的值。

您可以更改NLS_DATE_FORMAT,使其在两个数据库上都是一致的-但是,最好使用对TO_CHAR的显式调用,这样您就不会依赖会话变量和隐式转换。

票数 2
EN

Stack Overflow用户

发布于 2018-09-05 13:25:29

两个数据库之间有不同的日期格式。在本地数据库上运行此命令以更改日期格式

代码语言:javascript
复制
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-Mon-YY';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52186189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档