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

TO_DATEが正しく機能していないようです

    おそらく問題は、考慮していない小数の日付コンポーネントがあることです。クエリの列を切り捨てることで、その小数の日付コンポーネントを無視できます:

    SELECT section_id, COUNT(student_id) "ENROLLED"
    FROM enrollment
    WHERE TRUNC(enroll_date) = TO_DATE('2/10/2007', 'MM/DD/YYYY')
    GROUP BY section_id
    ORDER BY ENROLLED;
    

    enroll_dateを想定しています データ型はDATEです。

    説明:Oracleは、ここ で説明されているように日付を保存します。 、「すでにDD-MON-YYになっている日付形式」と記載されているため、日付は保存されません。これは、日付が表示される形式のみであり、セッションのパラメーターNLS_DATE_FORMATによって決定されます。

    テストテーブルを使って簡単なテストをしてみましょう。テーブルを作成し、セッションからNLS_DATE_FORMATを確認します。

    create table DATE_TST 
    ( id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
      test_date DATE
    );
    
    INSERT INTO date_tst (test_date) VALUES (SYSDATE);
    
    SELECT value
    FROM   nls_session_parameters
    WHERE  parameter = 'NLS_DATE_FORMAT';
    
    DD-MON-YYYY
    

    これが私の日付の表示方法です。

    
    SELECT * FROM date_tst;
    
    04-OCT-2020
    

    だから私は今日の日付を持っています。涼しい。次に、その日付を使用してクエリを実行できるかどうかを確認します。

    
    SELECT * FROM date_tst WHERE test_date = TO_DATE('04-OCT-2020','DD-MON-YYYY');
    
    no rows.
    

    日付を取得する日付形式に時間コンポーネントがないため、行は表示されません。 DATEには、年、月、日、時、分、秒があります。形式には、年、月、日のみがあります。データをクエリして、時間コンポーネントがあるかどうかを確認しましょう。

    SELECT TO_CHAR(test_date,'DD-MON-YYYY HH24:MI:SS') FROM date_tst;
    
    4-OCT-2020 21:12:39
    

    ああ、そうです... SYSDATEは、秒までの現在の時刻です。次に、より正確な日付形式でそのクエリを再試行してみましょう。

    SELECT * FROM date_tst WHERE test_date = TO_DATE('04-OCT-2020 21:12:39','DD-MON-YYYY HH24:MI:SS');
    
    04-OCT-2020
    

    そして、私たちの列があります。 TRUNCコマンドは、時間コンポーネントをカットします:

    SELECT TO_CHAR(TRUNC(test_date),'DD-MON-YYYY HH24:MI:SS') FROM date_tst;
    
    04-OCT-2020 00:00:00
    

    したがって、クエリを簡略化できます:

    SELECT * FROM date_tst WHERE TRUNC(test_date) = TO_DATE('04-OCT-2020','DD-MON-YYYY');
    
    04-OCT-2020
    


    1. SQLException:jdbc:oracle:thin:@ // localhost:1521/orclに適したドライバーが見つかりません

    2. mySQL-複数の行を返すselectで複数の列を更新します

    3. NodeJSで、node-postgresモジュールを使用してJSONオブジェクトをテキストとして保存する方法は?

    4. ウェブサイト全体のログインとしてのvBulletin(編集:ある程度の進歩がありました)