以下の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_CHAR
SQL*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)