2012-04-19 11 views
0

タイムスタンプがvarcharの形式で格納されたテーブルを20120419170525という形式で持っています。列にはいくつかのヌル値もあります。SQLクエリから特定のタイムスタンプを取得する方法

SELECTクエリでは、NVL(my_timestamp, to_timestamp(SYSDATE))を適用します。値がnullの場合は、現在のタイムスタンプを同じ形式で表示する必要があります。

私は、クエリのSQLステートメントを実行する前に、この文を試してみました:

alter session set nls_date_format = 'YYYYMMDDHH24MISS'. 

が、所望の結果を取得できませんでした。私はこの形式になっていますYYYY MM DD HH24:MI:SS

この形式をサポートするための解決策は何ですか?

+1

** **データベースシステムとバージョンは何ですか? ** SQL **は多くのデータベースシステムで使用されている言語である構造化問合せ言語です - SQLはデータベース製品ではありません**このようなものはベンダー固有のものです。使用しているデータベースシステム.... –

+0

廃止予定の文字データ型を使用して日付を数値として保存していますか?あなたの日付を 'date'データ型に入れるだけで何が問題になりますか? – Ben

+0

@Ben:私はテーブルを作りませんでした...テーブルは長い間使われていました。私は正確なテーブル名ではなく、ちょうどシナリオを与えました。今私はそれで特定の操作を実行する必要があります...私は問題にあった理由、それを操作する方法。 –

答えて

3

あなたはこのようにそれを行うことができます。

select nvl(my_timestamp, to_char(systimestamp, 'yyyymmddhh24miss')) 
from your_table 

しかし、あなたは本当にあなたがSYSDATEにとどまることができる「タイムスタンプ部」を使用しないので:

select nvl(my_timestamp, to_char(sysdate, 'yyyymmddhh24miss')) 
from your_table 
0

のための別の形式がありますタイムスタンプ。それはNLS_TIMESTAMP_FORMATです。セッションのためにNLS_DATE_FORMATと同じようにこれを設定します。

関連する問題