暂无图片
Oracle截取日期
我来答
分享
猫瞳映月
2022-07-08
Oracle截取日期
暂无图片 10M

DB版本:11.2.0.4

需求:截取max(gxsj)到YYYY-MM-DD HH24:MI:SS

gxsj是date类型

现在是这样写的

select substr(max(gxsj),1,19) from t1;

返回结果是这样的,格式乱掉了



有高手让我更改当前会话时间

ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';

这样在当前会话输出是正常的YYYY-MM-DD HH24:MI:SS格式,但是我的SQL最终需要放在kettle程序里面调用,无法在kettle里面更改当前会话时间,请问有大神知道怎么处理吗

我来答
添加附件
收藏
分享
问题补充
7条回答
默认
最新
人生路不熟

即使不显示YYYY-MM-DD HH24:MI:SS这种格式,也是能够进行比较的,你在kettle中,又不需要观看输入的过程,输入->设置变量->输入


暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
猫瞳映月
题主
2022-07-08
谢谢,就是这样的,非常感谢
刘贵宾

select substr(max(to_char(gxsj,'YYYY-MM-DD HH24:MI:SS')),1,19) from t1;

暂无图片 评论
暂无图片 有用 0
打赏 0
猫瞳映月
题主
2022-07-08
这样最后结果是字符类型的吧,因为要和其他值进行比较,所以最后应该是date类型才行,谢谢您
dbtiger

方法一:

SQL> show parameter nls_date_format;
SQL> alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;
复制

注意:

  • 修改数据库的参数,需要重启数据库后生效。
  • 这个是全局的,有时候影响非常大,所以必须格外小心,要确保不影响各个系统和应用的前提下修改!

方法二:

修改操作系统环境变量,如:Linux

export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
复制

注意:

  • 环境变量NLS_DATE_FORMAT必须和NLS_LANG一起设置,否则不会生效

另外,kettle也是可以设置时间格式的。祝你成功!

暂无图片 评论
暂无图片 有用 0
打赏 1
猫瞳映月
题主
2022-07-08
谢谢您的解答,我的数据库日期格式已经是yyyy-mm-dd hh24:mi:ss'这样的
刘贵宾

比较的时候将另一个值转为字符串进行比较不可以么?

暂无图片 评论
暂无图片 有用 0
打赏 0
dbtiger
2022-07-08
可以,但不推荐,因为kettl本身是java开发的,属于高级语言,性能方面就一般,加载上kettle属于抽取工具,对效率要求比较高,因此尽可能“预制”好时间格式之后再抽取,如果在SQL层面还消耗资源,如果数据量小没感觉,数据量大,性能影响就很大了。
刘贵宾
答主
2022-07-08
赵勇

DATE类型是包括年月日时分秒的,你的需求不需要做任何转换。而查询的结果只看到年月日,是受查询的工具影响的。例如,修改PLSQL DEVELOPER中的首选项,使其显示完整的日期数据。
图片.png

暂无图片 评论
暂无图片 有用 1
打赏 0
叶家钰
2022-07-08
kettle也得找到类似这种设置环境变量的位置。
猫瞳映月
题主
2022-07-08
谢谢老师,我的这种问题确实kettle工具影响的,我找找kettle相关的组件看看能不能解决
猫瞳映月

感谢每位为我耐心解答问题的人,给各位大神献上10墨值

暂无图片 评论
暂无图片 有用 1
打赏 0
猫瞳映月

@墨天轮  打赏墨值提示“检验表单重复提交时异常”,是系统Bug吗。。。

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
国产数据库厂商谁做的好?
回答 2
您好,国产厂商都各有各的特点,不妨说说您的需求?是有向国产数据库转型的需求,还是仅作调研?
Oracle中正在写入的表会影响备份吗?
回答 2
不会。
Oracle win10 家庭中文版,安装19 C报错:INF-13001
回答 2
已采纳
报错很明显呀,操作系统不支持哎建议安装一个虚拟机进行安装。
请问 设置commit_logging为batch后,有啥影响呢?
回答 4
已采纳
暂无文字回复
oracle数据库因tab$基表内容被删除导致数据库无法启动
回答 3
确定是tab$被删除了,可以尝试异机恢复之前的,然后手动导入tab$试试?谢谢!
insert select 很慢
回答 4
量不算大,建议还是多在select上提升,如分批基于rowid的查询分片多sessioninsert
Oracle 19c pdb 用ojdbc6,访问报错无效的用户名密码,用8就可以,有没有办法还用6?应用jdk版本低,用不了8 怎么解决
回答 2
在oracle用户下的sqlnet.ora设置即可。楼上说重启集群有点严重了,断开会话重连就行。
oracle bin目录下的oracle文件权限
回答 3
已采纳
这个文件的权限应该是6751,你可以修改一下,再尝试。
12c如何批量设置pdbs随cdb自动启动
回答 3
在12.1.0.2的时候可以使用参数SAVESTATE来保存pdbSQL> ALTERpluggableDATABASEALLsavestate;colNAMEformata20COL
oracle日志报07445核心转储错误
回答 3
这个不需要重启,但是你要先确认是不是这个bug