2016-06-09 197 views
-2

我想格式化所有日期從select * from table,但我不知道表的列。 我想在返回結果時將數據類型爲DATE的所有列格式化爲特定格式。格式日期選擇* perl

我正在使用Oracle和Perl腳本。

在此先感謝

回答

3

你可以這樣做:

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