sql >> データベース >  >> RDS >> Oracle

yyyy-mm-ddをmm/dd/yyyyに変換する

    日付には形式がありません。内部的には7バイトまたは8バイト で表されます。 。クライアントプログラムが(潜在的に)フォーマットを与えるのは、クライアントプログラムに日付が渡されたときだけです。

    SQL /PlusまたはSQLDeveloperの日付のデフォルトの文字列形式は、NLS_DATE_FORMATによって設定されます。 セッションパラメータ。他のクライアントには通常、デフォルトの日付形式に設定できるパラメータがあります(NLSも使用しない場合) 設定)。ただし、NLS_DATE_FORMAT はセッションパラメータであるため、ユーザーのセッションに属し、複数のユーザーはそれぞれ、設定方法に応じてパラメータに異なる値を設定できます。

    日付に特定の形式を指定する場合は、それを文字列に変換する必要があります:

    SELECT TO_CHAR( DATE '2016-05-01', 'MM/DD/YYYY HH24:MI:SS' )
    FROM   DUAL;
    

    クエリが機能しない理由

    TO_DATE( value, frmt ) 文字列値とフォーマットマスクが必要です。内部のTO_DATE('2016-05-01 00:00:00','YYYY-MM-DD HH24:MI:SS') は完全に有効であり、DATE '2016-05-01'を返します。 。

    ただし、外側のTO_DATE() その後、DATEが渡されます 生成したばかりのタイプと文字列形式(予期している2つの文字列の代わりに)。 Oracleは暗黙的にTO_CHAR()を呼び出します 日付にNLS_DATE_FORMATを使用します フォーマットマスクとしてのセッションパラメータ。これは、日付から文字列を生成し、エラーが発生した場合は、NLS_DATE_FORMATの値を生成します。 MM/DD/YYYY HH24:MI:SSではありません したがって、外側のTO_DATE() 暗黙的に作成された文字列を解析しようとしますが、最初に読み取った数値が1か月間無効であるため、失敗します。



    1. PHP/mySQL-新規ユーザーがデータを送信する際のベンチマーク値の定期的な再計算

    2. SQL Server(T-SQL)のデータベースメールログからイベントを削除する

    3. Mysql警告の質問?

    4. querydslでlistaggを使用する方法は?