2010-08-12 13 views
5

Quanto segue è una versione semplificata di una query che uno strumento di reporting sta inviando al nostro database. Non ho mai visto questa sintassi prima nella clausola Where. Qualcuno può dirmi cosa stanno facendo le parentesi? E, presumo che la 'd' sia un cast di date?Strange sintassi in una clausola Where

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

risposta

10

Vedere "supportati stringa letterale Formati per datetime" inserito nella MSDN datetime articolo.

Il {d 'XXXX-XX-XX'} è il formato datetime ODBC. Le sequenze di escape timestamp ODBC sono nel formato: { literal_type 'constant_value' }:

literal_type specifica il tipo della sequenza di escape. Timestamp hanno tre specificatori literal_type:

  • d = date solo
  • t = tempo solo
  • ts = timestamp (ora e data)

'constant_value' è il valore della sequenza di escape . constant_value deve seguire questi formati per ogni literal_type.

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