Abrufen der Daten vom Jahr im Datums-Feld
Angenommen, ich habe die Daten wie unten gezeigt
ACT_NO DATE1 AMOUNT
12111201 2/1/2009 66600.00
12111201 8/31/2009 66600.00
12111201 7/29/2008 133200.00
12111201 5/19/2009 66600.00
Ich brauche, um die Summe der Beträge, die für bestimmte im Jahr 2009 ie vom 1/31/2009 zu dem 31.12.2009.
Wie bekomme ich da pro Jahr? Das Datum1-Feld im date-format in oracle. Ich bin mit pl sql developer
Du musst angemeldet sein, um einen Kommentar abzugeben.
Solange Datum1 hat keine zeitliche Komponente, die Sie verwenden könnten:
Kann einen index verwenden, der auf Datum1. Eine andere Lösung (das könnte nicht verwenden Sie einen einfachen index auf Datum1) ist:
Dieser Abfrage wird die Summe der AMT-Spalte für ein bestimmtes Jahr. Die Einbeziehung des JAHRES das Ergebnis ist optional; wenn Sie das nicht wollen, müssen Sie nicht die GROUP BY-Klausel entweder.
Die Abfrage setzt Voraus, dass DATUM1 hat einen DATE-Datentyp und enthält eine Zeit-element (daher die zusätzliche Formatierung in der arm-UND der ZWISCHEN-Klausel). Wenn DATE1 ist ill-mannered genug, um eine Zeichenfolge, die einfachste Schlamassel ist nur, falls es zu einem Datum zuerst.
/*wo date1 zwischen to_date('01-JAN-2009', 'DD-MON-YYYY')
und to_date('31-DEC-2009 23:59:59', 'DD-MON-YYYY HH24:MI:SS')*/--von @APC Antwort
Können Sie auch extract(year from dateField)
Obwohl es sei denn, Sie möchten, erstellen Sie einen index auf die Funktion, unter Verwendung @APC oder @Tony Andrews ist der Weg zu gehen für die Filterung auf das Jahr.