2016-03-15 6 views
6

Ich versuche einen Bericht zu erstellen, der Datensätze aus einer SQL Server-Datenbank abruft, in der das Lieferdatum heute ist.So vergleichen Sie nur das Datumsteil, wenn das Lieferdatum heute ist

Ich habe versucht

select * from (tablename) 
where delivery_date = getdate() 

Obwohl das mir keine Fehler gab, es hat mir keine Aufzeichnungen geben entweder.

Ich nehme an, es ist, weil alle Daten wie sind: Vielleicht

2016-03-15 00:00:00.000 

, ich brauche das Datum zu verkürzen die Zeit-Stempel zu entfernen und dann versuchen?

+0

Sie können 'getdate()' auf 'date' setzen - das wird die Zeit abschneiden. Oder verwenden Sie den Datumsbereich, wenn "Lieferdatum" gespeichert auch Zeit enthält (wenn es so ist, würde ich vorschlagen, diesen Ansatz zu verwenden, anstatt beide Seiten auf "Datum" zu werfen). –

Antwort

11

Sie können eine Abfrage wie unten versuchen

select * from (tablename) 
where CAST(delivery_date as date) = CAST(getdate() as date) 

Auch wenn alle Liefertermine Zeit Teil wie 00:00:00.000 sicher haben dann

select * from (tablename) 
where delivery_date = CAST(getdate() as date) 

funktionieren würde, so gut.

+1

Wenn alle Lieferdaten keinen Zeitabschnitt haben, sollten Sie auch den Spaltentyp auf DATE ändern, um Platz zu sparen. –

+0

DANKE sehr Dhruv. Ich habe diesen Code ausprobiert und es hat funktioniert. Badi Mehrbaani aapki. Danke nochmal. – user1777929

+0

@ user1777929 Ihr Kommentar machte meinen Tag :) – DhruvJoshi

3

Wenn DELIVERY_DATE immer Mitternacht (00:00:00.000), vergleichen Sie es dann wie folgt aus:

select * from (tablename) 
where delivery_date = datediff(d, 0, getdate()) 

Mit datediff wie dieser ist eine schnelle Möglichkeit, die Zeit Teil eines Datetime-Wert zu verkürzen.

0

Sie müssen den Zeitteil des Feldes delivery_date UND den Wert GETDATE() entfernen.

SELECT * 
FROM (tablename) 
WHERE DATEADD(dd, DATEDIFF(dd, 0, delivery_date), 0) = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0) 
1

Ich würde nur 2 Params erstellen. Eine für StartTime und eine für EndTime und verwenden Sie diese in meiner Abfrage.

DECLARE @StartTime DATETIME, 
     @EndTime DATETIME 

SET @StartTime = DATEDIFF(d,0,GETDATE()) 
SET @EndTime = DATEADD(d,1,@StartTime) 

SELECT * 
FROM [tablename] 
WHERE delivery_date >= @StartTime 
     AND delivery_date < @EndTime 
0

Versuchen Sie folgendes:

DECLARE @Today DATETIME- SET @ Heute = CONVERT (Datum, getdate())

select * from (Tabellenname) wo DELIVERY_DATE = @Today

Verwandte Themen