以下のSQLからタイムスタンプを出力したい
select to_date('01/01/2011 12:00:00 AM','dd/mm/yyyy hh:mi:ss AM') from dual;
現在の出力-> 1/1/2011(午前12時のみタイムスタンプを印刷しません。最小値が12:01の場合は、印刷しています。
しかし、私は次のような出力が必要です1/1/2011 12:00:00 AM
TO_DATE文字列を に変換しますDATE。ADATEは、人間が判読できないパックされたバイナリ形式で格納されます。オラクルDATEには形式がありません。したがって、プログラムに日付を表示するように要求すると、プログラムはそれをDATE文字列に変換する必要があります。explicit を実行して形式を明示的に指定しない場合、TO_CHARSQL*Plus などのツールは、セッションの を使用して日付を文字列に変換しますNLS_DATE_FORMAT。他のアプリケーションでは、日付を文字列に変換するさまざまな方法を選択できます。たとえば、クライアントの地域設定を使用したり、ユーザーが形式を構成できるようにしたりします。
を表す特定の形式の文字列を返したい場合DATEは、明示的な を使用する必要がありますTO_CHAR。何かのようなもの
SELECT to_char( some_date_column, 'dd/mm/yyyy hh:mi:ss AM' )
FROM some_table
投稿した特定のケースでは、文字列を文字列として手に持っているのでTO_DATE、日付TO_CHARに変換してから文字列に戻すのではなく、デュアルから選択するだけです。DATEただし、選択しようとしている実際のテーブルに実際のテーブルがあると想定しています。
フォーマットを制御する最良の方法は、to_char必要な日付フォーマットを使用して明示的に指定することです。
select to_char(to_date('01/01/2011 12:00:00 AM','dd/mm/yyyy hh:mi:ss AM'),'DD/MM/yyyy hh:mi:ss AM')
from dual;
使用できます
select Convert(varchar,'01/01/2011 12:00:00 AM',113)