2016-03-28 13 views
0

Meine Tabelle ist unten. Ich muss alle Datensätze zwischen Admit Date ab 21:30 Uhr bis zum nächsten Tag um 13:00 Uhr finden. Ich kann das Datum und die Uhrzeit nicht fest codieren, da es mehrere Tage dauern kann.Tage zwischen bestimmten Zeiten berechnen

Admit Date 
2015-12-30 09:51:16.000 
2015-12-30 10:15:00.000 
2015-12-30 10:51:00.000 
2015-12-30 11:19:00.000 
2015-12-30 12:12:00.000 
2015-12-30 12:28:00.000 
2015-12-30 12:36:00.000 
2015-12-30 13:27:54.000 
2015-12-30 14:03:00.000 
2015-12-30 14:10:00.000 
2015-12-30 14:21:00.000 
2015-12-30 14:37:00.000 
2015-12-30 15:42:00.000 
2015-12-30 15:56:00.000 
2015-12-30 17:43:00.000 
2015-12-30 17:47:51.000 
2015-12-30 18:04:00.000 
2015-12-30 18:40:00.000 
2015-12-30 18:45:02.000 
2015-12-30 20:44:00.000 
2015-12-30 20:52:00.000 
2015-12-30 21:23:00.000 
2015-12-30 22:26:00.000 
2015-12-30 23:17:00.000 
2015-12-31 01:37:00.000 
2015-12-31 08:20:00.000 
2015-12-31 09:17:00.000 
2015-12-31 09:53:07.000 
2015-12-31 10:15:00.000 
2015-12-31 12:01:00.000 
2015-12-31 12:09:00.000 
2015-12-31 12:12:00.000 
2015-12-31 12:17:18.000 
2015-12-31 12:18:00.000 
2015-12-31 12:23:00.000 
2015-12-31 12:23:00.000 
2015-12-31 12:40:00.000 
2015-12-31 12:53:00.000 
2015-12-31 13:09:40.000 
2015-12-31 13:28:00.000 
2015-12-31 13:38:12.000 
2015-12-31 13:39:01.000 
2015-12-31 14:51:29.000 
2015-12-31 14:57:11.000 
2015-12-31 16:06:00.000 
2015-12-31 16:13:00.000 
2015-12-31 17:22:00.000 
2015-12-31 18:07:00.000 
2015-12-31 18:24:02.000 
2015-12-31 19:38:00.000 
2015-12-31 19:53:00.000 
2015-12-31 21:01:00.000 
2015-12-31 21:26:00.000 
2015-12-31 21:46:00.000 
2015-12-31 22:20:00.000 
2015-12-31 23:03:00.000 
2015-12-31 23:34:00.000 
2016-01-01 00:16:00.000 
2016-01-01 01:03:00.000 
2016-01-01 01:19:00.000 
2016-01-01 01:30:00.000 
2016-01-01 03:21:00.000 
2016-01-01 05:33:00.000 
2016-01-01 06:07:00.000 
2016-01-01 08:03:00.000 
2016-01-01 08:33:00.000 
2016-01-01 08:35:00.000 
2016-01-01 09:09:00.000 
2016-01-01 09:42:00.000 
2016-01-01 10:02:00.000 
2016-01-01 11:12:08.000 
2016-01-01 12:06:00.000 
2016-01-01 12:47:00.000 
2016-01-01 13:11:31.000 
2016-01-01 14:22:00.000 
2016-01-01 16:49:00.000 
2016-01-01 18:39:00.000 
2016-01-01 18:54:00.000 
2016-01-01 19:16:00.000 
2016-01-01 19:51:00.000 
2016-01-01 20:15:00.000 
2016-01-01 20:27:00.000 
2016-01-01 20:27:00.000 
2016-01-01 21:06:00.000 
2016-01-01 21:06:00.000 
2016-01-01 21:39:00.000 
2016-01-01 21:58:00.000 
2016-01-01 22:15:00.000 
2016-01-01 22:16:00.000 
2016-01-01 22:43:00.000 
2016-01-01 22:54:00.000 
2016-01-01 23:06:00.000 
2016-01-01 23:10:00.000 

Ich muss in der Lage sein, Daten zu erhalten über mehrere Tage

+0

Was ist Ihr RDBMS? – morgb

+0

Ich benutze SQL Server – user3666224

Antwort

1

Dies wird Ihnen alle Termine auf der Liste, wo die Zeit 21.30 Uhr oder später ist, oder 01.00 oder früher (im Wesentlichen diejenigen, die zwischen diesen beiden Zeitpunkten aufgetreten):

SELECT admit_date 
FROM admit 
WHERE CONVERT(time,admit_date) >= CONVERT(time,'21:30') 
OR CONVERT(time,admit_date) <= CONVERT(time,'13:00') 

konnte Sie Verwenden Sie diese Logik auch in einer case-Anweisung, um einen anderen Indikator zu erstellen, der Ihnen hilft, diese Daten zu kategorisieren.

+0

Vielen Dank, das hat funktioniert – user3666224

0

Sie tun können, ein CTE de-Markierung eine Spalte, die Werte Mapp und für außerhalb des CTE können Sie diese Werte selectec.

Sie können auch die Funktion LAST oder in Oracle LAST_VALUE verwenden und eine Aggregate-Funktion ausführen, um den Wert bis zur letzten Spalte zu extrahieren.

Ich hoffe, dass dir das hilft.

Verwandte Themen