2013-11-27 14 views
5

ist habe ich eine Tabelle (mytable), der enthält:alle Datum auswählen, die heute weniger als

id, date 

und einige Zeilen (die Id für das Beispiel ist):

4235   null 
3563 2013-11-27 08:02:53.917 
3143 2013-11-27 01:04:51.917 
1455   null 
5223 2013-11-26 08:02:53.917 
2123 2013-11-25 08:02:53.917 

Ich möchte Wählen Sie alle Zeilen aus, deren Datum vor dem heutigen Datum liegt, oder das Datum ist null.

so in meinem Beispiel, wenn ich die Abfrage auf 2013-11-27 laufen möchte ich erhalten:

4235   null 
1455   null 
5223 2013-11-26 08:02:53.917 
2123 2013-11-25 08:02:53.917 

Ich denke, es zu tun:

select case when 
(
(select DATEPART(yyyy,dailybudgetexceeded) from sensplit_commercial_goal where 
commercialGoalId = 'dbe20d71-e304-4989-8524-5feef61d32a7') >= YEAR(GETDATE()) 
or... 

aber vielleicht gibt es einen kürzeren Weg.

jede Hilfe geschätzt!

+0

Haben Sie Daten vor * heute * bedeuten? –

Antwort

5
select * 
from sensplit_commercial_goal 
where commercialGoalId = 'dbe20d71-e304-4989-8524-5feef61d32a7' 
and (dailybudgetexceeded < getdate() or dailybudgetexceeded is null) 
6
select * from mytable 
where [date] < Convert(date, getdate()) or [date] is null 

SQLFiddle Demo

+0

Warum sollte GetDate() auf Date gesetzt werden? –

+1

Wenn die Abfrage am 2013-11-27 08: 02: 54.917 ausgeführt wird, wird auch der Datensatz mit 2013-11-27 08: 02: 53.917 von der Abfrage zurückgegeben, sofern Sie GetDate() nicht an Date – Raj

+0

The OP übergeben Ich habe nicht darum gebeten, die Zeit abzuschneiden - zumindest nicht eindeutig –

3
SELECT * 
FROM sensplit_commercial_goal 
WHERE dailybudgetexceeded < CONVERT(date, GETDATE()) OR dailybudgetexceeded IS NULL 
+0

Warum GetDate() auf Date? –

+0

Den Zeitteil der Datetime abschneiden. – kingkong0924

Verwandte Themen