格式日期选择* perl

问题描述:

我想格式化所有日期从select * from table,但我不知道表的列。 我想在返回结果时将数据类型为DATE的所有列格式化为特定格式。格式日期选择* perl

我正在使用Oracle和Perl脚本。

在此先感谢

你可以这样做:

alter session set nls_date_format = '<your date format>'; 

如:

alter session set nls_date_format = 'dd/mm/yyyy hh24:mi:ss'; 

select sysdate from dual; 

SYSDATE    
--------------------- 
09/06/2016 09:33:38 

记住,如果排除时间部分(例如,它是不相关的某些列,因为它是总是设置为午夜),那么对于那些确实有时间部分的列的输出将会误导 - 例如:

alter session set nls_date_format = 'dd/mm/yyyy'; 

select sysdate from dual; 

SYSDATE 
---------- 
09/06/2016 

我有点困惑,为什么你不知道你在处理哪些列。查看数据库并获取该信息并不难。

+0

那么,tabel的字段可能会在未来发生变化,这就是我更喜欢使用'select *'的原因。我将测试提出的答案。谢谢 – ilde

+3

通常,生产代码中的'select *'是不好的。你还没有说过你的脚本有什么用途,所以使用'select *'可能会也可能没有意义。编写剧本的懒惰,恕我直言,不是一个很好的理由(不是我说这是发生在这里;没有足够的信息来确定!)。如果表格的结构在将来发生变化,那么你的脚本也应该相应地改变;毕竟,如果它们是应用程序的一部分(例如报告),那么它们应该以与其他应用程序代码类似的方式处理。 – Boneist

+0

好吧,它是一个从数据库表中复制一些行到另一个的工具,它不是一个连续的过程,它最终运行。 谢谢 – ilde