Der Versuch, zwei Daten mit der Zeit zu vergleichen. Der Vergleich funktioniert jedoch nicht.
SELECT *
FROM attendance
WHERE TO_DATE (checktime, 'DD/MM/YYYY HH:MI:SS AM') >=
TO_DATE ('01/09/2019 04:30:00 PM', 'DD/MM/YYYY HH:MI:SS AM')
AND TO_DATE (checktime, 'DD/MM/YYYY HH:MI:SS AM') <=
TO_DATE ('30/09/2019 10:00:00 PM', 'DD/MM/YYYY HH:MI:SS AM')
AND userid = '3825'
AND SUBSTR (checktime, -2, 2) = 'PM'
ORDER BY TO_DATE (checktime, 'DD/MM/YYYY HH:MI:SS AM') ASC
Ich hatte erwartet, dass die Ausgabe gleich oder größer als 16:30 Uhr und kleiner als oder gleich 22:00 Uhr ist. Dieser Datumsvergleich funktioniert jedoch nicht. Hier ist die Ausgabe des Codes. Ich möchte, dass mein Ergebnis Datum und Uhrzeit zwischen den genannten Zeiträumen enthält. Hinweis: Der Datentyp CHECKTIME ist varchar2.
Ich denke, Sie benötigen Daten für alle Tage ( 01/09/2019 - 30/09/2019
) und die Tageszeit sollte zwischen liegen 04:30 PM and 10: PM
.
Sie können dies mit der folgenden Abfrage erreichen:
SELECT
*
FROM
ATTENDANCE
WHERE
TRUNC(TO_DATE(CHECKTIME, 'DD/MM/YYYY HH:MI:SS AM'))
BETWEEN TO_DATE('01/09/2019', 'DD/MM/YYYY')
AND TO_DATE('30/09/2019', 'DD/MM/YYYY')
AND ( TO_DATE(CHECKTIME, 'DD/MM/YYYY HH:MI:SS AM') - TRUNC(TO_DATE(CHECKTIME, 'DD/MM/YYYY HH:MI:SS AM')) ) * 1440 -- converting difference into minutes
BETWEEN 990 -- 04:30 PM in minutes (16.5*60)
AND 1320 -- 10:00 PM in minutes (22*60)
AND USERID = '3825'
AND SUBSTR(CHECKTIME, - 2, 2) = 'PM'
ORDER BY
TO_DATE(CHECKTIME, 'DD/MM/YYYY HH:MI:SS AM') ASC;
Prost!!
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen