2016-07-19 13 views
0

Dies ist ein Teil meiner Tabelle, dieBuchung in bestimmten Zeitbereich

Post_time    Post_date  
------------------------------------ 
06:13:15.0000000  2015-07-15  
22:13:15.0000000  2015-07-15 
03:13:15.0000000  2015-07-16 
..........    .......... 
..........    .......... 

ich alle die Infos WHERE Zeitstempel von 22.00 Uhr bis 05.00 Uhr in der nächsten day.So erhalten müssen enthält, ist Das Postdatum wird geändert, es ist ein anderer Tag. und ich brauche das für den ganzen Tisch nicht nur dieses Datum.

Ich versuchte dies:

SELECT Post_time FROM dbo.My_Table WHERE 
Post_time between dateadd(HH,22,cast(cast(Post_date as date) as datetime)) and 
dateadd(HH,29,cast(cast(Post_date as date) as datetime)) 

aber ich habe dies:

The data types time and date are incompatible in the greater than or equal to operator. 

Antwort

0

Sie dies versucht haben?

SELECT Post_time FROM dbo.My_Table WHERE 
Post_date+Post_time between dateadd(HH,22,cast(cast(Post_date as date) as datetime)) and 
dateadd(HH,29,cast(cast(Post_date as date) as datetime)) 

oder Gießen Post_Time

SELECT Post_time FROM dbo.My_Table WHERE 
Post_date+cast(Post_time as datetime) between dateadd(HH,22,cast(cast(Post_date as date) as datetime)) and 
dateadd(HH,29,cast(cast(Post_date as date) as datetime)) 

Eigentlich nur, wenn Sie sich die Zeit überprüft, die Sie nicht brauchen Post_date

SELECT Post_time 
    FROM dbo.My_Table 
    WHERE 
    CAST('2001-01-01' as datetime) + CAST(Post_time AS datetime) 
    between cast('2001-01-01 22:00' AS datetime) AND 
    between cast('2001-01-02 05:00' AS datetime) 
+0

Die Datentypen Datum und Datumzeit nicht kompatibel sind im Operator add . – Chis

+0

@Chis versuchen Sie die letzte. – vercelli

+0

@Chis: Sie müssen Ihre Tabelle ersetzen :) – TheGameiswar