2010-08-12 4 views
5

Das Folgende ist eine vereinfachte Version einer Abfrage, die ein Berichtstool an unsere Datenbank sendet. Ich habe diese Syntax nie zuvor in der Where-Klausel gesehen. Kann mir jemand sagen, was die Klammern machen? Und ich gehe davon aus, dass das "d" wie ein Date Cast wirkt?Seltsame Syntax in einer Where-Klausel

Select 
    ch.ContainerID, 
    ch.WorkItemHistoryEventTypeEnumID, 
    ch.EventTime, 
    ch.ContainerBinName, 
    ch.WorkItemSerialNumber, 
    ch.Closed 
From Wip.vwContainerHistory ch 
Where 
    ch.EventTime >= {d '2010-08-09'} 

Antwort

10

Siehe "Unterstützte String Literal Formate für Datetime" in MSDN datetime Artikel.

Ihr {d 'XXXX-XX-XX'} ist ODBC-Datetime-Format. ODBC-Timestamp-Escape-Sequenzen haben das folgende Format: { literal_type 'constant_value' }:

literal_type gibt den Typ der Escape-Sequenz an. Zeitstempel haben drei literal_type Spezifizierer:

  • d = Zeitpunkt nur
  • t = Zeit nur
  • ts = Zeitstempel (time + Datum)

'constant_value' ist der Wert der Escape-Sequenz . constant_value muss diesen Formaten für jeden literal_type folgen.

d > yyyy-mm-dd 
t > hh:mm:ss[.fff] 
ts > yyyy-mm-dd hh:mm:ss[.fff]