2016-07-08 6 views
0

Meine Suche für Oracle DB ist:TO_DATE, TO_CHAR in oracle

SELECT NBR, START_TIME,END_TIME, BYTES_DATA 
FROM TABLE_NAME Partition (P201607) 
WHERE BYTES_DATA <> 0 AND NBR LIKE '%29320319%' 

und Ergebnisse in:

NBR   START_TIME   END_TIME   BYTES_DATA 
1029320319 2016-07-01 00:15:51 2016-07-01 00:22:44 158014048 
1029320319 2016-07-01 00:22:51 2016-07-01 01:22:51 616324863 
1029320319 2016-07-01 01:22:51 2016-07-01 01:55:15 431354240 
1029320319 2016-07-01 01:55:22 2016-07-01 02:53:45 1040869155 
1029320319 2016-07-01 02:53:52 2016-07-01 03:53:52 40615861  
1029320319 2016-07-04 07:22:05 2016-07-04 07:22:05 4911 
1029320319 2016-07-05 06:42:56 2016-07-05 07:42:56 58271774 
1029320319 2016-07-05 07:42:56 2016-07-05 07:42:56 173 
1029320319 2016-07-08 07:47:01 2016-07-08 07:47:01 105995 

Aber ich würde diese Ausgabe auf Zeit filtern möge. Wie kann ich alle Datensätze während dieses Monats (07) oder der letzten 7 Tage erhalten, wobei die Start_Zeit und die End_Zeit zwischen 06:30:00 und 07:59:59 liegen?

Antwort

1

Mit to_date oder to_char können Sie das Datum/Uhrzeit-Feld neu formatieren, um die erforderlichen Kriterien, z.
diesem Beispiel werden alle Einträge zeigen, wo der Monat, in Start- oder Endzeit als aktuellen Monat gleich ist:

SELECT NBR, START_TIME,END_TIME, BYTES_DATA 
FROM TABLE_NAME Partition (P201607) 
WHERE BYTES_DATA <> 0 AND NBR LIKE '%29320319%' 
AND ((TO_DATE(START_TIME, 'mm') = TO_DATE(SYSDATE, 'mm') OR 
     (TO_DATE(END_TIME, 'mm') = TO_DATE(SYSDATE, 'mm')) 

Ändern Sie die Kriterien für die letzten 7 Tage, zum Beispiel
Das trunc Schlüsselwort entfernt den Zeitstempel von einem Datum/Zeit-Wert:

AND ((TO_DATE(START_TIME, 'yyyy/mm/dd') >= (TRUNC(SYSDATE) - INTERVAL '7' days) OR 
     (TO_DATE(END_TIME, 'yyyy/mm/dd') >= (TRUNC(SYSDATE) - INTERVAL '7' days)) 

Ändern das Maskenformat innerhalb der to_date mal angeben, zum Beispiel
Dieser Zusatz wird für Einträge filtern, wo oder Endzeiten beginnen, sind von 6.30.00 bis 07.59.59:

AND ((TO_DATE(START_TIME,'hh24:mi:ss') BETWEEN 
     TO_DATE('06:30:00','hh24:mi:ss') AND 
     TO_DATE('07:59:59','hh24:mi:ss')) OR 
     (TO_DATE(END_TIME,'hh24:mi:ss') BETWEEN 
     TO_DATE('06:30:00','hh24:mi:ss') AND 
     TO_DATE('07:59:59','hh24:mi:ss')) 

I TechOnTheNet für Beschreibungen/Syntax dieser und anderer Oracle Funktionen mögen. Siehe Link für die vollständige Liste der verfügbaren Formatparameter.

Verwandte Themen