Ich habe eine Situation, in der ich eine Veranstaltung jeden Tag zwischen 23:00 Uhr bis zum nächsten Tag 01:00 Uhr erhöhen muss. Meine Tabelle hat ein Datum von Datum, die aussehen wird:Finden Sie die aktuelle Zeit zwischen zwei Feldern in Oracle
Start date | EndDate
31-05-2016 23:00:00 | 01-06-2016 01:00:00
Schon die Datenbank wie diese konzipiert und Anwendungen sind zu Hause ist. Jetzt habe ich versucht, die Daten mit BETWEEN
Anweisung zu bekommen, aber nichts funktioniert, wie ich brauche, da das ENDDate am nächsten Morgen ist.
Kann jemand sagen, wie man diese Daten richtig extrahiert.
Meine ORACLE
Abfrage
SELECT COUNT(*) INTO P_OUTPUT FROM MAINTENANCE_LOG WHERE
NVL(RECCURING_TYPE,'O')='D' AND ACTIVE_STATUS='Y' AND
TO_CHAR(SYSDATE,'HH24MISS') BETWEEN TO_CHAR(START_DATE,'HH24MISS') AND TO_CHAR(END_DATE,'HH24MISS');
Ich habe versucht, wieder das bisher Umwandlung, aber es ist auch nicht mit dem EndDate arbeiten.
Update: In meiner Anforderung muss ich nur überprüfen, ob die aktuelle Zeit zwischen dem Startdatum oder der Endzeit liegt. Ich muss diese Abfrage jeden Tag ausführen und es sollte eine Aktivität zwischen 23:00 und 1:00 eines jeden Tages machen.
Hinweis: Wenn ich die Abfrage von am 31-05-2015 ausführen, werde ich wahr/falsch erhalten. Aber, wenn ich am nächsten Tag in der Nacht renne, werde ich nur falsch werden, da das EndDate schon vorbei ist. Also kann ich die normale Datumsabfrage nicht verwenden.
Warum sind Sie ein Datumsfeld to_charing und mit zwischen? Tue sie nicht. Vergleichen Sie einfach sysdate zwischen start_date und end_date ... Sie fordern die Engine auf, TEXT-Werte zu vergleichen. was sollte nicht ondates getan werden ... – xQbert
Was ist über 'sysdate zwischen Startdatum und Enddatum? –
Warum mache ich ein To_CHAR ist, obwohl meine Daten ein Datum haben Ich muss nur überprüfen, die aktuelle Zeit ist zwischen 23:00 und 01:00 Uhr. Es sollte mir eine Anzahl (*) basierend darauf geben. – smilu